added TIME_SEQUENTIAL animation mode which shows frame 0 first, and
for the full duration. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1687 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: ImageSprite.java,v 1.10 2002/07/08 21:15:35 mdb Exp $
|
// $Id: ImageSprite.java,v 1.11 2002/09/17 02:34:05 ray Exp $
|
||||||
|
|
||||||
package com.threerings.media.sprite;
|
package com.threerings.media.sprite;
|
||||||
|
|
||||||
@@ -38,6 +38,11 @@ public class ImageSprite extends Sprite
|
|||||||
/** Animation mode indicating time based animation. */
|
/** Animation mode indicating time based animation. */
|
||||||
public static final int TIME_BASED = 2;
|
public static final int TIME_BASED = 2;
|
||||||
|
|
||||||
|
/** Animation mode indicating sequential progressive animation.
|
||||||
|
* Frame 0 is guaranteed to be shown first for the full duration, and
|
||||||
|
* so on. */
|
||||||
|
public static final int TIME_SEQUENTIAL = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs an image sprite without any associated frames and with
|
* Constructs an image sprite without any associated frames and with
|
||||||
* an invalid default initial location. The sprite should be populated
|
* an invalid default initial location. The sprite should be populated
|
||||||
@@ -221,7 +226,7 @@ public class ImageSprite extends Sprite
|
|||||||
if (_frames == null) {
|
if (_frames == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fcount = _frames.getFrameCount();
|
int fcount = _frames.getFrameCount();
|
||||||
boolean moved = false;
|
boolean moved = false;
|
||||||
|
|
||||||
@@ -241,6 +246,13 @@ public class ImageSprite extends Sprite
|
|||||||
nfidx = (int)((timestamp/_frameDelay) % fcount);
|
nfidx = (int)((timestamp/_frameDelay) % fcount);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case TIME_SEQUENTIAL:
|
||||||
|
if (_firstStamp == 0L) {
|
||||||
|
_firstStamp = timestamp;
|
||||||
|
}
|
||||||
|
nfidx = (int) (((timestamp - _firstStamp) / _frameDelay) % fcount);
|
||||||
|
break;
|
||||||
|
|
||||||
case MOVEMENT_CUED:
|
case MOVEMENT_CUED:
|
||||||
// update the frame if the sprite moved
|
// update the frame if the sprite moved
|
||||||
if (moved) {
|
if (moved) {
|
||||||
@@ -273,6 +285,9 @@ public class ImageSprite extends Sprite
|
|||||||
/** For how many milliseconds to display an animation frame. */
|
/** For how many milliseconds to display an animation frame. */
|
||||||
protected long _frameDelay;
|
protected long _frameDelay;
|
||||||
|
|
||||||
|
/** The first timestamp seen (in TIME_SEQUENTIAL mode). */
|
||||||
|
protected long _firstStamp = 0L;
|
||||||
|
|
||||||
// /** DEBUG: The alpha level used when rendering our bounds. */
|
// /** DEBUG: The alpha level used when rendering our bounds. */
|
||||||
// protected static final Composite ALPHA_BOUNDS =
|
// protected static final Composite ALPHA_BOUNDS =
|
||||||
// AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.2f);
|
// AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.2f);
|
||||||
|
|||||||
Reference in New Issue
Block a user