2013-10-10 28 views
0

我有我的Flash庫中的圖像(稱爲sun.png),我想直接加載到一個位圖的實例(或等效),而無需使用Actionscript鏈接和創建自己的班級。直接從庫中沒有類加載圖像在ActionScript 3

我曾嘗試:

var sun:Bitmap = flash.utils.getDefinitionByName("sun.png") as Bitmap; 

和:

var sun:Bitmap = this.loaderInfo.applicationDomain.getDefinition("sun.png") as Bitmap; 

但這些都不能工作(我相信這些功能用於加載類)

我怎樣才能做到這一點沒有的從文件系統創建一個類或加載? 或者這甚至可能嗎?

回答

4

不,這是不可能的。 getDefinitionByName就像當前ApplicationDomain中的getDefinition,除了其中一個通過錯誤而不是返回null。 它們都只用於找到鏈接的符號。如果你不鏈接位圖,它甚至不會被編譯到輸出Flash電影中。

+0

我想我得堅持使用圖片來自文件系統,然後 –

0

您可以在靜態對象中創建一些別名,例如: 您可以定義它們一次,然後根據需要多次使用對象。在位圖的情況下,獲取位圖後,請在新的位圖()中使用位圖數據,因爲您需要對同一位圖數據使用更多不同的引用。

class Refs 
{ 
    public static const PNG_0 : Bitmap= flash.utils.getDefinitionByName("com.example.MyImage") as Bitmap; 
    public static const PNG_1 : Bitmap= flash.utils.getDefinitionByName("com.example.OtherImage") as Bitmap; 
} 
0

什麼,我想你想做的事:第一,確保圖像文件在同一文件夾中FLA文件(沒有必要把它在庫)。那麼你可以通過編寫此得到位圖:

import flash.display.Bitmap; 
import flash.display.BitmapData; 
import flash.events.Event; 
import flash.net.URLRequest; 

bitmap:Bitmap; 
ldr = new Loader(); 
ldr.load(new URLRequest ("sun.png")); 
ldr.contentLoaderInfo.addEventListener (Event.COMPLETE, onloaded); 

function onloaded (e:Event):void { 
e.target.removeEventListener (Event.COMPLETE, onloaded); 
bmd = new BitmapData (ldr.width, ldr.height); 
bmd.draw (ldr.content); 
bitmap = new Bitmap (bmd); 
}