使用flash和actionscript 3我想使用很多png作为动画。我目前使用Loader对象来加载这些图像。但现在我想知道展示这些动画的最佳方式是什么:
1
每次必须显示一个新的png时,我可以使用加载器加载它,只需要一个加载器:
var image:Loader = new Loader();
每次使用新图像作为动画的一部分时使用此功能:
image.load(new URLRequest(location));
2
我还可以为每个图像创建几十个加载器,并隐藏除了我想要显示的加载器之外的每个加载器。当我想要动画继续时,我隐藏当前的动画并显示下一个动画。这意味着要创建大量的Loader对象。
哪种方式最好?或者还有第三种更好的方法吗?
答案 0 :(得分:2)
Flash IDE的主要目的正是这个...我知道很多人讨厌它的开发,并且有充分的理由,但我真的认为在Flash中制作动画的理想工具是Flash IDE。
答案 1 :(得分:0)
执行以下操作:
public class ImageLoader { // Singleton class for explanation
private static var imageLoader:Loader = new Loader(); // 1 loader only
private static var currentImage:Bitmap = null; // currently attached image
public static function Initialize():void {
imageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, Rsc_Loaded );
}
public static function RenderImage( url:String ):void {
imageLoader.load( new URLRequest( url ) );
}
private static function Rsc_Loaded( eEvent:Event ):void {
if ( null != currentImage ) { // if previous bitmap was attached to stage
currentImage.parent.removeChild( currentImage ); // remove it
}
currentImage = eEvent.target.content; // Bitmap is loaded
// attach the content to stage for rendering
GetMainApp().stage.addChild( currentImage );
}
}
// then inside your main app. do below
// load image 1 and add it to stage
imageLoader.load("img1.png");
// time to animate to img2.png
imageLoader.load("img2.png");
这不是最有效的方法,但您可以添加缓存来预先缓存所有图像,并将它们附加到舞台上。或者,如果你是硬核,可以读取BitmapData类并执行自己的像素操作。