Track bounds changes for our underlying sprite in such a way that we dirty

things properly if they do. Simply stealing our target sprite's _bounds will
not result in the necessary calls to addDirtyRegion() if they change due to
calls to setLocation() on our (now unmanaged) target sprite.


git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@89 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
Michael Bayne
2006-12-05 06:52:54 +00:00
parent 7850123988
commit cd97adf00b
@@ -8,6 +8,7 @@ import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Transparency;
import com.threerings.media.sprite.Sprite;
@@ -35,7 +36,7 @@ public class GleamAnimation extends Animation
public GleamAnimation (SpriteManager spmgr, Sprite sprite, Color color,
int upmillis, int downmillis, boolean fadeIn)
{
super(sprite.getBounds());
super(new Rectangle(sprite.getBounds()));
_spmgr = spmgr;
_sprite = sprite;
_color = color;
@@ -62,6 +63,14 @@ public class GleamAnimation extends Animation
return;
}
// if the sprite is moved or changed size while we're gleaming it,
// track those changes
if (!_bounds.equals(_sprite.getBounds())) {
Rectangle obounds = new Rectangle(_bounds);
_bounds.setBounds(_sprite.getBounds());
invalidateAfterChange(obounds);
}
if (_alpha != alpha) {
_alpha = alpha;
invalidate();