Let us use a Sprite + Path as an animation
git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@878 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package com.threerings.media.animation;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Rectangle;
|
||||
|
||||
import com.threerings.media.sprite.PathObserver;
|
||||
import com.threerings.media.sprite.Sprite;
|
||||
import com.threerings.media.util.Path;
|
||||
|
||||
/**
|
||||
* Wraps the dirty work of moving a sprite along a {@link Path} in an Animation.
|
||||
*/
|
||||
public class SpritePathAnimation extends Animation
|
||||
implements PathObserver
|
||||
{
|
||||
public SpritePathAnimation (Sprite sprite, Path path)
|
||||
{
|
||||
super(new Rectangle(0, 0, 0, 0)); // We don't render ourselves
|
||||
_sprite = sprite;
|
||||
_path = path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paint (Graphics2D gfx) { }
|
||||
|
||||
@Override
|
||||
public void tick (long tickStamp) { }
|
||||
|
||||
public void pathCancelled (Sprite sprite, Path path)
|
||||
{
|
||||
_finished = true;
|
||||
sprite.removeSpriteObserver(this);
|
||||
}
|
||||
|
||||
public void pathCompleted (Sprite sprite, Path path, long when)
|
||||
{
|
||||
_finished = true;
|
||||
sprite.removeSpriteObserver(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void willStart (long tickStamp)
|
||||
{
|
||||
super.willStart(tickStamp);
|
||||
_sprite.addSpriteObserver(this);
|
||||
_sprite.move(_path);
|
||||
}
|
||||
|
||||
final protected Sprite _sprite;
|
||||
final protected Path _path;
|
||||
}
|
||||
Reference in New Issue
Block a user