我只有 3 张图像用于为奔跑的动物制作动画:1:动物站立 2:大步/跳跃的动物 3:仰卧的动物死了
目前,我将它们作为精灵嵌入到主类中,并在我想要一个而不是另一个时更改它们的 .alpha 属性 2. 有没有更好的方法来做我正在做的事情?令人讨厌的事情之一是单独更新每个精灵的属性。拥有一个对象并能够更改对象上的图像将是理想的,因此我只需要更改一个对象的属性。
我只有 3 张图像用于为奔跑的动物制作动画:1:动物站立 2:大步/跳跃的动物 3:仰卧的动物死了
目前,我将它们作为精灵嵌入到主类中,并在我想要一个而不是另一个时更改它们的 .alpha 属性 2. 有没有更好的方法来做我正在做的事情?令人讨厌的事情之一是单独更新每个精灵的属性。拥有一个对象并能够更改对象上的图像将是理想的,因此我只需要更改一个对象的属性。
为此,最好在自己的类中处理您的动画!像这样,假设你的动物是一匹马,所以这就是我所说的类
package {
import flash.display.Sprite;
public class Horse extends Sprite{
private var holder:Sprite = new Sprite();
public function Horse() {
var img1:Image1 = new Image1();// ur images from library
var img2:Image2 = new Image2();
var img3:Image2 = new Image3();
holder.addChild(img1);
holder.addChild(img2);
holder.addChild(img3);
addChild(holder);
setImage(0);// set 1st image visible
}
public function setImage(nr:uint):void
{
for(var i:int = 0; i < holder.length;i++;)
holder[i].visible = false;
holder[nr].visible = true;
}
}
}
那么你会像这样使用它!
var horse:Horse = new Horse();
addChild(horse);
horse.x = 25;
horse.y = 25; // move the whole object(all 3 images)
horse.setImage(2);// or to whatever frame you need
使用可见属性而不是 alpha 值。如果你只是将 alpha 设置为 0,它仍然会被渲染并花费 cpu。如果将 visible 设置为 false 则不会呈现!
编辑:
正如 Amy 指出的那样,虽然最快的方法是 BitmapData Frame Assignment,但在这里可以使用 blitting!在这里,您将所有帧作为 BitmapData 保存在 Vector 中,您可以从 SpriteSheet 加载它,并将新的 BitmapData 分配给您的 Bitmap,而不是使用 copyPixels。它比 blitting 更快,并且您仍然可以使用所有内置方法!