Actionscript 3 跨多个文件的AS3事件

Actionscript 3 跨多个文件的AS3事件,actionscript-3,actionscript,actionscript-2,Actionscript 3,Actionscript,Actionscript 2,我正在从AS2迁移到AS3,遇到了这个问题 在我的项目中,我使用了主文档文件,它可以作为单独的文件加载多个嵌套动画。在主文档中,我有一个全局函数,例如: _global.onAnimationEnd(mc:MovieClip){...} 在动画中可以嵌套,我只是这样称呼它: onAnimationEnd(this); 我是AS3新手,但不知为什么,在AS3中正确的方法是使用事件系统,但我在这方面有问题。有没有人可以帮助解决这样一个easyAS2问题?AS3处理事件的方式与AS2方法截然不同。

我正在从AS2迁移到AS3,遇到了这个问题

在我的项目中,我使用了主文档文件,它可以作为单独的文件加载多个嵌套动画。在主文档中,我有一个全局函数,例如:

_global.onAnimationEnd(mc:MovieClip){...}
在动画中可以嵌套,我只是这样称呼它:

onAnimationEnd(this);

我是AS3新手,但不知为什么,在AS3中正确的方法是使用事件系统,但我在这方面有问题。有没有人可以帮助解决这样一个easyAS2问题?

AS3处理事件的方式与AS2方法截然不同。在AS3中,事件在对象层次结构上冒泡,然后返回到原始对象。如果层次结构中还有响应事件所需的对象,则必须在收件人对象上设置事件侦听器,以便在事件冒泡时处理事件


科林·穆克(Colin Moock)的书《基本动作脚本3.0》(Essential ActionScript 3.0)由O'Reilly出版,全面论述了这一点。如果您现在需要快速修复,则没有太多帮助…

最后,我使用这种方法:

我正在使用自定义事件,如: 在我的深嵌套动画中,我替换了: 与:

使用clasic侦听器处理缓存事件。
编辑:带有动画的外部文件必须正确加载到正确的上下文中,但这是AS3的另一个故事。

从as2迁移到AS3一开始可能有点烦人,事情可能会因为外观原因而显得复杂。您应该能够通过一个冒泡到顶层的事件来运行它,并在那里聆听它。在这里快速查看as3中冒泡的事件:另外,如果您在as3文件中加载了as2 swf,那么可能值得一看swf桥

    package com.oldes {
        import flash.events.Event;
        public class GameEvent extends Event {
             public var data:Object;
             public static var ANIMATION_END = "onAnimationEnd";
             public function GameEvent(
                 type:String,
                 data: Object,
                 bubbles:Boolean=true,
                 cancelable:Boolean=false
            ){
                 super(type, bubbles, cancelable);
                 this.data = data;
            }
            override public function clone():Event {
                return new GameEvent (type, data, bubbles, cancelable);
            }
        }
    }

onAnimationEnd(this);
import com.oldes.GameEvent;
dispatchEvent(new GameEvent(GameEvent.ANIMATION_END,{anim: this}));