[Flash开发笔记] Flash导出文件慢的一个可能原因

今天,在一个有多个场景的Flash中,加入了不多的一点代码,想实现一个游戏面板呼出的效果。
第一场景的一个按钮上,有如下一点代码:
on (rollOver) {
_root.propertyBar_mc.onEnterFrame = function() {
        
if (_root.propertyBar_mc._x<=560) {
            
delete _root.propertyBar_mc.onEnterFrame;
        } 
else {
            _root.propertyBar_mc._x 
-= 20;
        }
    };
}

即当面板被呼出后,便停止在某个位置,也就是加粗的那句,删除onEnterFrame事件
然后在第二个场景,我把同样的代码复制了过去,编译时(导出),却发现,巨慢,似乎停顿一般,简直无法忍受 :~(
回想了刚才也没有添加什么代码,就是代码是复制过去的。
然后,试着将第一场景和第二场景的propertyBar_mc命名为不同,结果好了。
奇怪啊。。。倒底是为什么呢?难道两个场景中不能有相同的mc吗?一点点排除,问题锁定在了上边加粗的那句代码:

            delete _root.propertyBar_mc.onEnterFrame;

发现,只要两个场景中,不要出现完全相同的“delete _root.propertyBar_mc.onEnterFrame;的语句就没事,否则,就巨慢。
就是说,两个场景的元件的名称可以相同,如果第一个场景是:

            delete _root.propertyBar_mc.onEnterFrame;

第二个场景中是:

            delete this.onEnterFrame;

这样语句只要不同就没事,与元件是否命名相同无关,真是很奇怪的问题,不知道Flash的编译器在deleteonEnterFrame语句编译时做了什么事,所以具体底层原因不清楚。当然,导出后执行结果是正常的。
posted on 2007-04-28 18:41  三千  阅读(1474)  评论(0编辑  收藏  举报