Actionscript 3 将AS3 dispatchEvent转换为AS2

Actionscript 3 将AS3 dispatchEvent转换为AS2,actionscript-3,actionscript-2,Actionscript 3,Actionscript 2,我有一个as3文件处理其他文件(小游戏)。所有文件都是AS3,只有一个文件是AS2,它太大了,我无法将其重写为AS3。 在AS3中,我使用: dispatchEvent(new Event("ending", true)); 当游戏结束时。 我需要在AS2文件中发送“ending”,这样我的AS3主文件就可以发挥神奇的作用。 有人能把这一行从as3翻译成as2吗?事件模型只是一组与事件类型(字符串)相关联的回调。EventDispatcher维护此关联,并在特定事件触发时迭代回调 这对于重新创

我有一个as3文件处理其他文件(小游戏)。所有文件都是AS3,只有一个文件是AS2,它太大了,我无法将其重写为AS3。 在AS3中,我使用:

dispatchEvent(new Event("ending", true));
当游戏结束时。 我需要在AS2文件中发送“ending”,这样我的AS3主文件就可以发挥神奇的作用。
有人能把这一行从as3翻译成as2吗?

事件模型只是一组与事件类型(字符串)相关联的回调。
EventDispatcher
维护此关联,并在特定事件触发时迭代回调

这对于重新创建您自己来说是非常琐碎的,在您的情况下,您可以大大简化它

下面是AS2中一个简单的
EventDispatcher
示例:

function EventDispatcher():Object
{
    var listeners:Object = { };

    return {

        addEventListener: function(type:String, callback:Function)
        {
            listeners[type] = callback;
        },

        dispatchEvent: function(type:String)
        {
            for(var i:String in listeners)
            {
                if(i === type) listeners[i]();
            }
        }

    };
}
及其实施:

// Create the event dispatcher.
var eventDispatcher:Object = EventDispatcher();

// Add an event listener as with AS3.
eventDispatcher.addEventListener("ending", endGame);

// Define the handler function.
function endGame():Void
{
    trace("Game has ended.");
}

// Dispatch an event.
eventDispatcher.dispatchEvent("ending");
如果要使其更接近AS3事件模型,需要在
dispatchEvent
循环中创建一个“Event”对象,并将其传递给处理程序,如下所示:

dispatchEvent: function(type)
{
    for(var i:String in listeners)
    {
        var event:Object = { type: i, target: this };
        if(i === type) listeners[i](event);
    }
}