2011-01-27 43 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中引发。

相关问题