【问题标题】:executing as3 code from a string从字符串执行 as3 代码
【发布时间】:2011-07-27 15:35:53
【问题描述】:

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

我已经做了一些谷歌搜索,但我没有想出太多。

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

playerhp += 15;

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

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

【问题讨论】:

    标签: xml actionscript-3 string execute


    【解决方案1】:

    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
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      如果您想使用类似于 eval 的东西,则没有本地方法可以做到这一点。 虽然,您可以查看此library 并查看示例here

      现在,出于多种原因,我不建议使用这种东西。多想一想,你自己就会想出来的。

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

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

      【讨论】:

        猜你喜欢
        • 2015-11-08
        • 1970-01-01
        • 2018-04-19
        • 2017-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        相关资源
        最近更新 更多