2009-09-04 3 views
1

flashとactionscriptを使用する3アニメーションとしてたくさんのpngを使いたいです。私は現在、これらの画像をロードするためにLoaderオブジェクトを使用しています。Actionscript 3アニメーションを使って、png、reload、hide?

1.

たびに新しいPNGを示さなければならない、私はちょうど1つのローダーを持つ、それをロードするためのローダを使用することができます。しかし、今、私は最善の方法は、これらのアニメーションを表示するにはどうなるか疑問に思って:

var image:Loader = new Loader();

そして毎回新しいイメージを、この機能を使用して、アニメーションの一部として使用されている:

image.load(新規のURLRequest(場所))。

2.

私はまた、すべての画像のための1つをローダの数十を作成し、私が示したいものを除くすべてのローダーを隠すことができます。アニメーションを続行したい場合は、現在のアニメーションを隠して次のアニメーションを表示します。これは、多くのローダーオブジェクトを作成することを意味します。

どちらの方法が最適でしょうか?あるいはこれを行うにはさらに3番目の良い方法がありますか?

答えて

2

Flash IDEの主な目的はまさにこのことです...多くの人々が開発するのが嫌いですが、理由はありますが、Flashでのアニメーションに最適なツールはFlash IDEです。

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クラスについて読んで、独自のピクセル操作を実行できます。