我有一个处理其他文件(小游戏)的 as3 文件。所有文件都是 AS3,除了一个是 AS2,它太大了,我无法将其重写为 AS3。在 AS3 中,我使用:
dispatchEvent(new Event("ending", true));
游戏结束时。我需要在 AS2 文件中发送“结尾”,所以我的 AS3 主文件可以做到这一点。有人可以将这一行从 as3 翻译成 as2 吗?
我有一个处理其他文件(小游戏)的 as3 文件。所有文件都是 AS3,除了一个是 AS2,它太大了,我无法将其重写为 AS3。在 AS3 中,我使用:
dispatchEvent(new Event("ending", true));
游戏结束时。我需要在 AS2 文件中发送“结尾”,所以我的 AS3 主文件可以做到这一点。有人可以将这一行从 as3 翻译成 as2 吗?
事件模型只是一堆与事件类型(字符串)相关的回调。当EventDispatcher
特定事件被它触发时,它维护这个关联并迭代回调。
重新创建自己非常简单,在您的情况下,您可以大大简化它。
EventDispatcher
这是一个在 AS2中可能很简单的示例:
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
循环中创建一个“事件”对象并将其传递给处理程序,如下所示:
dispatchEvent: function(type)
{
for(var i:String in listeners)
{
var event:Object = { type: i, target: this };
if(i === type) listeners[i](event);
}
}