2011-12-06 55 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對象等等,然後您需要實現一些事件處理程序。至於你的代碼 - 使用Dictionary而不是Array來存儲位圖。字典會讓你直接訪問位圖,而不是遍歷所有項目。 – ncreated

+0

感謝rincewind。我會看一下字典。 – Darrin

回答

3

當您將添加任何資產(手段)MovieClip /圖像作爲設計時間的一部分Flash文件* * .Fla文件。它被稱爲內部資產。

如果您將使用Swf文件外部的ActionScript在編譯的swf中加載任何內容,則它被稱爲外部資產。

對於內部資產: 1.它將在Fla文件編譯時進行編譯。 2.您的swf文件與外部資產的比較變得很大。 3.與外部資產比較,初始加載時間會很長。

對於外部資產: 1.它不會在Fla文件編譯時編譯。 2.您的swf文件與內部資產的比較變得很小。 3.初始加載時間會比較內部資產較低。

相關問題