我有一个扩展Sprite的自定义“StagedSprite”类。它的目的是在舞台调整大小时自动将其自身与舞台的边界对齐。
现在,我加载一个PNG文件“ybmp”(位图)并将其作为子项添加到“loadingIcon”(StagedSprite)。在Flash CS5中,PNG在屏幕上正确显示(也对齐)。但是,如果我在Firefox或IE中发布并运行SWF,则PNG不会显示!
甚至 MORE 奇怪的是以下代码产生的内容:
//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);
我将“跟踪”结果放在屏幕上的TextField中。在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.但是浏览器版本中只有 ONLY 。在我的代码中,我没有将scaleX或scaleY设置为任何东西,假设它默认设置为1。
有没有人有任何建议为什么在浏览器中我的“loadingIcon”会有零刻度而不是CS5?在这两种情况下都是完全相同的代码,我已经交叉检查了1000次......
答案 0 :(得分:1)
好的,我发现它并发送到这里以防万一将来有人得到帮助。
在浏览器中,Stage.RESIZE事件在启动时被触发。它没有在创作工具中被解雇。由于它发生在很早的阶段,“loadingIcon”将获得零高度(因为它没有加载gfx)并且这将导致零scaleY。
因此,需要注意的是:在浏览器中,可能会在启动时触发多个事件,通常不会在CS5中触发。