2011-01-27 18 views
1

我正在拉我的頭髮。我有這個非常奇怪的錯誤:錯誤在瀏覽器中顯而易見,但不在Flash CS5中

我有一個自定義的「StagedSprite」類,它擴展了Sprite。其目的是在舞臺重新調整大小時自動對齊舞臺的邊框。

現在,我加載PNG文件 「ybmp」(位圖)並將其添加爲孩子 「loadingIcon」(StagedSprite)。在Flash CS5中,PNG在屏幕上正確顯示(也對齊)。但是,如果我從Firefox或IE中發佈並運行SWF,則不會顯示PNG!

什麼是連更多奇怪的就是下面的代碼生成:

//var ybmp:Bitmap = the loaded bitmap 
//loadingIcon is a StagedSprite 
loadingIcon.addChild(ybmp); 
trace(ybmp.bitmapData.width,ybmp.bitmapData.height); 
trace(ybmp.width,ybmp.height); 
trace(loadingIcon.width,loadingIcon.height,loadingIcon.getChildAt(0),loadingIcon.stage); 

我把「跟蹤」的結果在文本字段在屏幕上。在CS5,上面的代碼產生:

215 200 
215 200 
215 200 [object Bitmap] [object Stage] 

在Firefox和IE瀏覽器,上面的代碼產生:

215 200 
215 200 
0 0 [object Bitmap] [object Stage] 

究竟是什麼那是什麼?!?在瀏覽器中,位圖IS在「loadingIcon」中添加,但「loadingIcon」仍將其寬度和高度設置爲零。 ?!?!?

我可以在這裏粘貼StagedSprite代碼太,但它是一個有點大,沒有scrollRect屬性。畢竟,它可能是它在Flash創作工具中運行的原因,而不是在瀏覽器中。

許多許多在此先感謝,

比爾

編輯: 哦,我很好。對於一些仍然令人難以置信的原因,loadingIcon將scaleX和scaleY設置爲0.但在瀏覽器版本中只有只有。在我的代碼中,我沒有任何設置它的scaleX或scaleY爲假設它應該默認設置爲1。

沒有人有任何建議,爲什麼在我的瀏覽器「loadingIcon」將具有零標度而不是在CS5?這正是在這兩種情況下相同的代碼,我有交叉檢查這1000倍......

回答

1

OK,我發現它,萬一有人在這裏發送它有助於在未來的一段時間。

在瀏覽器中,Stage.RESIZE事件在啓動時被解僱。它並未在創作工具中被解僱。由於它發生在一個非常早的階段,「loadingIcon」會得到一個零高度(因爲它沒有gfx加載),並且會導致scaleY爲零。

所以,需要注意的是:在瀏覽器中,可能會在開始時觸發幾個事件,而這些事件通常不會在CS5中引發。

相關問題