我用它来触发 AS3 中的键盘事件:
dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_UP,true,false,_charcode,_keycode));
但我似乎无法弄清楚如何在 AS2 中实现相同的目标,这甚至可能吗?我必须向外部 swf 触发一个关键事件,但我没有 swf 的来源。
我用它来触发 AS3 中的键盘事件:
dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_UP,true,false,_charcode,_keycode));
但我似乎无法弄清楚如何在 AS2 中实现相同的目标,这甚至可能吗?我必须向外部 swf 触发一个关键事件,但我没有 swf 的来源。
AS1/2 中没有原生的事件调度系统。AS1/2 使用回调或处理程序。您可以使用http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00002329.htmlEventDispatcher
类编写自己的调度系统,但您需要通过自己的代码编写火灾事件。
1 方式:单击 btn 并在操作窗口中写入处理程序:
on (press) {
// do smth or dispatchEvent
}
2方式:创建按钮,选择它们,在属性面板中设置实例名称(例如btnName
),在时间轴框架中使用您的按钮选择并在操作窗口中写入:
btnName.onPress = function () {
// do smth or dispatchEvent
}
在 AS2 中调度事件与 AS3 有所不同,因为 AS3 中的大多数类已经扩展了 EventDispatcher 类,但是在 AS2 中,情况并非如此。
对于 AS2,如果不能直接扩展 EventDispatcher 类,有些人选择在创建的类中创建事件调度器对象:
public class Magic extends MovieClip{
public var _dispatcher:EventDispatcher;
....
....
对于任何事件,该事件最终都会转换为字符串,因此如果您有正确的字符,您可以调度任何事件,而无需使用常量表示:
...
...
...
_dispatcher.dispatchEvent(new KeyboardEvent(KeyboardEvent.UP));
// is the same as the following:
_dispatcher.dispatchEvent(new KeyboardEvent("keyUp"));
因此,您想要做的事情可能是可能的,但这很大程度上取决于原始编码人员如何建模他们的代码。要确定代码的结构,您可以使用您最喜欢的反编译器对 swf 进行反编译,并跟踪“侦听”发生的位置。然后,您可以尝试以“调度”对象为目标,并根据需要模拟调度。
(我猜你正在加载这个外部 swf)。加载 swf,并针对执行调度的影片剪辑/对象:
var _dispObject = _loadedSwf.mc.mc.mc.dispatchingObject;
按照您的要求进行调度。
_dispObject.dispatchEvent(new KeyboardEvent("keyUp"));