首先区分一下stage的stageWidth和width属性。stage.stageWidth是flash player的宽度,stage.width是指stage里content的宽度,如果这个舞台(stage)里什么内容都没有,stage.width就是0。
现在的需求是在运行期获得舞台的高宽,以期编码实现将组件添加到舞台中央等这样的效果。但是我得到的stageWidth 和 stageHeight 都为0。
一般认为,flash文件在不同浏览器中的行为是一致的。如上所述,在FireFox/OSX 和 IE/Win这种搭配才有这样的bug。
在html页面使用使用SWFObject也有这样的问题:http://foxling.cn/as-flex-air/swfobject-bug-at-ie/。将这位同志的经验抄录如下:
在as里解决的方法与上面所述是一致的。
SWFObject.js里的解决方案
在swfobject.js里找到函数function createSWF(attObj, parObj, id)里面针对winIE的处理方法是:
el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
看了一下Adobe自己的AC_OETags.js,他是用document.write方法直接写入,没有这个问题;
直接写静态html(object)没有这种问题;
直接访问这个flash的地址,也没有这种问题。