2009-08-21 36 views
0

我已經加載了在Flash CS9(AS3)中創建的SWF。我有問題將Flex應用中的Bitmap(或BitmapData)傳遞給加載的SWF。Flash CS3 SWF在flex問題中加載(位圖)

調用Flex中加載的其他函數工作,但是當我嘗試將Bitmap傳遞給加載的SWF時,什麼都不會發生。下面是一個示例代碼:

FLEX:

try{ 
    var bm:Bitmap = (someEvent.data as Bitmap); 
    imageHolder.source = bm; // works fine with container inside flex app 
    flashSWF.setPhotoBitmap(bm); 
}catch(e:Error){ 
    tracer("error = "+e); 
} 

FLASH:

function setPhotoBitmap(b:Bitmap):void{ 
    addChild(b); // throws error 
} 

以上拋出一個類型錯誤:錯誤#2007 大概是因爲b爲null。

是否有任何限制我應該知道,或者我在這裏做錯了什麼?

乾杯!

+0

是什麼類型imageHolder的原因?它在哪裏定義? – 2009-08-22 00:50:59

+0

您在加載的SWF上調用了哪些其他函數?你如何加載這個SWF?你需要在這裏提供更多關於事件流程的細節。 – 2009-08-22 00:52:49

+0

Hi Lior,這裏有一些細節: 1)imageHolder是Flex的SWFLoader。這是Flex階段的一個可視化UI。 2)我使用Flex中的另一個SWFLoader加載Flash swf。像這樣: 3)一旦加載SWF,我這樣做:flashSWF = flashSwfLoader.content as MovieClip; 4)然後我使用flashSWF成功地調用了許多函數(在swf的時間軸中) 5)只有當Bitmap被傳遞給它的一個函數時,問題纔出現。 希望那些細節能給出更清晰的畫面。 謝謝! – Yeti 2009-08-22 07:40:44

回答

0

我找到了解決方案。問題是因爲我犯了一個愚蠢的錯誤。

var bm:Bitmap = (someEvent.data as Bitmap); 

的問題是在上述線。 'someEvent'由FileReference.load()生成,我沒有意識到數據是ByteArray而不是位圖。

所有這一次,我只是將byteArray傳遞給只接受位圖的函數。

對不起人,我的壞!

感謝您的時間。

P

0

什麼時候你正在調用setPhotoBitmap?

我想你應該沒問題,如果你在SWFLoader實例的INIT處理程序中執行它。那是當你的swf被加載並且所有的類都被初始化的時候。

Goodluck!