在 Actionscript 3.0 中扩展函数

Extend Function in Actionscript 3.0

您好,我正在为我自己的 AS3 简单脚本语言创建 Lexer、Parser 和 Interpreter。我希望它的工作方式类似于 JavaScript,因为我希望能够在运行时从已解析的脚本中执行指令。有一个闪存库可以执行此操作,但问题是 VMFunctions 无法被视为本机闪存函数。我希望能够通过脚本语言对本机闪存对象调用 addEventListener(),但我想将 VM 函数传递给仅接受本机函数的侦听器参数。我可能不得不做一些我知道可行的工作,但如果使用 flash_proxy 和代理 class 可以将 AVM 识别为本机函数的对象会更直观。所以简而言之,我想创建一个自定义 vm 函数 class 以某种方式扩展本机函数 class 或者可以这样处理,以便当我将自定义 VM 函数传递到 addEventListener 时() 方法它不会抛出 TypeReference 类的错误。谢谢。

有一个简短的答案:包装它。您想在事件发生时调用 VMFunction 吗?在所需的控件上为该事件创建一个事件侦听器,然后调用将正确数据传递给它的函数。由于这是一个解析器,它可能需要一些文本,下面是一个示例:

var tf:TextField; // your text field, populated elsewhere
var parseButton:Sprite; // click this to parse, bla blabla
function onClick(e:MouseEvent):void {
    yourVMFunction(tf.text); // parse output if necessary
}
function Parser() { // constructor
    // some code not depicted
    parseButton.addEventListener(MouseEvent.CLICK,onClick);
}

如果您需要重新填充代码,yourVMFunction 可以是类型 Function 的变量。