2017-07-13 73 views
1

我試圖加載SWF和其顯示爲位圖。AS3 - 類型錯誤:錯誤#1034:類型強制失敗:不能轉換到flash.display一flash.display.Bitmap

到目前爲止,我已經能夠加載SWF:

loader.load(new URLRequest("assets/floorplan.swf")); 
loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, initPic); 

現在上載完成我期待藉此SWF,並將其轉換爲位圖,如下所示:

public function initPic(loadEvent:flash.events.Event):void 
{ 

    container.addEventListener(MouseEvent.CLICK, zoom); 

    bitmapData = Bitmap(LoaderInfo(loadEvent.currentTarget).content).bitmapData; 
    image = new Bitmap(bitmapData); 
    spImage.addChild(image); 
    container.addChild(spImage); 

} 

不過我出現TypeError錯誤:錯誤#1034:類型強制失敗:無法將flash.display轉換爲flash.display.Bitmap。

我在做什麼錯?

+2

** ** Loader.content是** **位圖只如果加載圖像文件:JPG,PNG,GIF等。如果加載SWF,則** Loader.content **引用主時間軸對象,即** MovieClip **或主文檔類子類** MovieClip **或**雪碧**。 – Organis

+0

你真的想將加載的SWF轉換爲靜態圖片嗎?或者只是將SWF按原樣添加到顯示中? – BadFeelingAboutThis

+0

@BadFeeling關於這個首先,偉大的名字!這些swf(我也在png和svg中也有)是房子的平面圖,我的最終目標是讓他們明白爲天(png工作不那麼好)並添加監聽器事件,以便放大和縮小swf或者png或者svg。 – user979331

回答

1

Loader.content位圖僅如果加載圖片文件:JPG,PNG,GIF等

如果您加載一個SWF中,Loader.content指主時間軸對象,這是的MovieClip或主文檔類的子類的MovieClip 雪碧(其不能被轉換爲位圖

然後,裝載機是加載內容的顯示對象容器,因此,如果只想縮放/位置/旋轉載入的圖形,它是操作裝載機例如一個好主意,因爲訪問的內容可能由於安全原因而不可用。

另一個好主意是聽INIT事件,而不是完整的,因爲當所有字節加載完成時開火,而INIT隨後出動,當加載的內容實際上是準備好了。

loader.load(new URLRequest("assets/floorplan.swf")); 
loader.contentLoaderInfo.addEventListener(Event.INIT, initPic); 

public function initPic(e:Event):void 
{ 
    container.addChild(LoaderInfo(e.currentTarget).loader); 
    container.addEventListener(MouseEvent.CLICK, zoom); 
} 

此外,如果你的容器具有除了加載的內容沒有圖形,你可以自由地簡化代碼如下:

container.addChild(loader); 
container.addEventListener(MouseEvent.CLICK, zoom); 

loader.load(new URLRequest("assets/floorplan.swf")); 
相關問題