查看文章 |
swfobject 2.1在IE7下flash显示不正常以及内存泄漏 这几天一直为这个很奇怪的问题困扰。最后证明,只有在 swfobject 下 才会出现这种问题。我只测试了 2.1版本。 忙啊。 问题症状:1,使用swfobject加载flash, 使用IE 7。初次打开html页面,正常。 按下F5 刷新。 flash 里面的 textfield 全都挪到位置(0,0)。都叠加到一起。 2,初次打开页面正常,按下F5刷新。 页面然后一直处于加载状态。cpu使用率飙升到 60%多,内存 200M ,300,400,、、、 1000M,我赶紧kill掉IE进程。 我笔记本配置 cpu P7350,内存3G.。 不是机器的问题。那肯定是 flash的问题了。 然后反复测试。换flash加载方式, 逐段注释flash里面的脚本。放开。 最后找到。 1, textfield 都挪到 位置 (0,0) , 是因为 我在as3里面是这样写的 lbl1.x = 0; 页面按下F5 刷新的时候, stage.stageWidth 取不到了? 都变成了 0 ? 改成 lbl2.x = 100 ; lbl3.x = 200; 显示正常。 我换其他 flash加载方式,显示正常啊。
2,内存泄漏。 是因为 有这段代码; list1 = new List; list1.setSize(stage.stageWidth*1/4,stage.stageHeight*1-20); var count:uint = list1.rowCount * 2; 可以看到 ,循环里面的内容我都注释掉了。 当按下F5刷新的时候,跟上面一样,stage的值取不到了。给list setsize 肯定无效了。 但是setsize这句话 不会使得flash 死掉。 而是后面的。 取 list1.rowCount ,这个值取 list 的 行数,但是现在 list的 高度为负值。这个行数 就变成一个不知道多少位的数了。下面做循环导致flash以惊人的速度吃内存。 总结: 两个问题的 关键都是 stage.stageWidth 和 stage.stageHeight 在 页面 按下F5 刷新的时候取不到了。从flash本身来讲,很难优化吧。stage的其他属性有可能出问题。不可能不使用stage对象吧。 那就只能找 swfobject 的问题了。 我换做其他加载方式,是正常的。 算了。到此为止吧。很忙啊。 一个字,换、、、、、
|

