跨多个文件的AS3事件

时间:2011-01-28 10:49:35

标签: actionscript-3 actionscript actionscript-2

我正在从AS2迁移到AS3并遇到此问题..

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

_global.onAnimationEnd(mc:MovieClip){...}

并且在动画中(可以嵌套)我只是称之为:

onAnimationEnd(this);

我是AS3的新手,但不知何故,AS3的正确方法是使用Event系统,但我有问题要做。是否有人可以帮助解决这么简单(AS2)的问题?

2 个答案:

答案 0 :(得分:0)

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

O'Reilly出版的Colin Moock的书“Essential ActionScript 3.0”全面介绍了它。如果您现在需要快速修复,那会帮助不大......

答案 1 :(得分:0)

最后我正在使用这种方法:

  • 我正在使用自定义事件:

    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}));
  • 使用clasic侦听器处理缓存事件。

编辑:带动画的外部文件必须正确加载到正确的上下文中,但这是另一个AS3故事。