2011-12-06 18 views
3

プログラミングに錆びており、内部と外部の読み込みの違いを理解できません。 Flash Developで作成されたゲームでは、すべての資産がパッケージに入れられます。彼らの多くはありません(20の画像と小さなmp3〜2 MB)。私の資産を下のコードで読み込む際の問題は何ですか?または、待機時間タイマーを使用してURLローダーを作成する必要があるのはなぜですか?どんなコメントも感謝します。AS3:外部資産と内部資産の読み込みの違いは何ですか?

public class ImageLoader 
{  
    private var alImages:Array = new Array;  

    public function ImageLoader() 
    { 
     [Embed(source = "../lib/greenbutton.png")] 
     var imgGreenButton:Class; 
     alImages.push(["imgGreenButton", imgGreenButton]); 

     [Embed(source = "../lib/tray.jpg")] 
     var imgTray:Class; 
     alImages.push(["imgTray", imgTray]);  

    } 

    public function getBitmap (search:String):Bitmap {   

     // Create Cyan square for load fails 
     var tempData:BitmapData = new BitmapData(40, 40, false, 0x000FFFF); 
     var tempBitmap:Bitmap = new Bitmap (tempData); 

     for (var i:int = 0; i < alImages.length; i++) {   
      if (alImages[i][0] == search) {    
       tempBitmap = new alImages[i][1];      
      } 
     } 
     return tempBitmap; 
    } 
} 
+0

私はあなたの問題を理解しているかわかりません:)。この例では、資産を読み込んでいません。あなたはそれらを埋め込んでいます(コンパイル中にあなたのswfにコンパイルされ、コードから直接アクセスできることを意味します)。外部資産をロードするには、Loaderクラスインスタンスを作成し、URLRequestオブジェクトなどを作成する必要があります。次に、いくつかのイベントハンドラを実装する必要があります。あなたのコードについては、ビットマップを格納するための配列の代わりに辞書を使用してください。ディクショナリでは、すべてのアイテムを反復処理するのではなく、ビットマップに直接アクセスすることができます。 – ncreated

+0

rincewindに感謝します。私は辞書を調べます。 – Darrin

答えて

3

アセットを追加する場合は、MovieClip/Imageを* .Flaファイルのデザインタイムフラッシュライブラリの一部として追加します。それは内部資産と呼ばれています。

Swfファイルの外からActionScriptを使用してコンパイル済みswfのコンテンツをロードする場合は、それを外部アセットと呼びます。

内部資産の場合: 1. Flaファイルのコンパイル時にコンパイルされます。 2. swfファイルは外部の資産と比較して大きくなります。 3.外部資産と比較して初期ローディング時間が長くなります。

外部アセットの場合: 1. Flaファイルのコンパイル時にはコンパイルされません。 2. swfファイルは、内部の資産を比較して小さくなります。 3.内部資産を比較すると、初期ローディング時間が短くなります。

関連する問題