从字符串中执行as3代码

时间:2011-04-01 12:00:22

标签: xml actionscript-3 string execute

我正在处理一个简单的文本rpg,我将所有数据对象存储为xml文件,但我需要能够为许多事情运行一些简单的语句。

我做了一些谷歌搜索我没有提出太多。

我要做的是采取简单的陈述,如:

playerhp += 15;

if(playerisvampire == 1) {blah blah;}

并将它们嵌入到xml结构中,以便项目或会话行可以包含检查和可执行代码,使rpg类成为更多的解释器和接口。这样的事情有可能吗?

2 个答案:

答案 0 :(得分:0)

ActionScript 3不再包含eval函数,因此无法直接执行此操作。但是,您可以使用自己的简单解释器手动执行此操作。像这样:

var item:XML =
    <health_item>
        <action name="hp_change" value="15"/>
    </health_item>;

在ActionScript中检查操作名称,找到相应的函数并使用“value”参数调用它:

for each (var action:XML in item.action) {
    var actionName:String = action.@name;

    //switch variant
    switch (actionName) {
        case "hp_change":
            hpChange(action.@value);
            break;
        //and so on for other known actions
    }

    //direct call by name variant
    if (hasOwnProperty(actionName)) {
        this[actionName](action.@value);
    } else {
         //report error
    }
}

答案 1 :(得分:0)

我不确定我是否理解你想如何构思这个想法。

如果你想使用类似于eval的东西,那么没有本地方法可以做到这一点。 不过,您可以查看此library,然后查看和示例here

现在,我不建议使用这样的东西有很多原因。考虑一下,你会自己想出一些。

我建议从xml实现一个简单的解析器和加载命令,然后只解释提供的数据并执行相应的命令:

<command id="hurt" params="-15"/>