使用png,重载或隐藏动作脚本3动画?

时间:2009-09-04 09:26:27

标签: actionscript-3 animation

使用flash和actionscript 3我想使用很多png作为动画。我目前使用Loader对象来加载这些图像。但现在我想知道展示这些动画的最佳方式是什么:

1

每次必须显示一个新的png时,我可以使用加载器加载它,只需要一个加载器:

var image:Loader = new Loader();

每次使用新图像作为动画的一部分时使用此功能:

image.load(new URLRequest(location));

2

我还可以为每个图像创建几十个加载器,并隐藏除了我想要显示的加载器之外的每个加载器。当我想要动画继续时,我隐藏当前的动画并显示下一个动画。这意味着要创建大量的Loader对象。

哪种方式最好?或者还有第三种更好的方法吗?

2 个答案:

答案 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类并执行自己的像素操作。