Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 从字符串执行as3代码_Xml_Actionscript 3_String_Execute - Fatal编程技术网

Xml 从字符串执行as3代码

Xml 从字符串执行as3代码,xml,actionscript-3,string,execute,Xml,Actionscript 3,String,Execute,我正在开发一个简单的文本rpg,并将所有数据对象存储为xml文件,但我需要能够运行一些简单的语句来处理许多事情 我在谷歌上搜索了一下,但没找到多少 我想做的是做一些简单的陈述,比如: playerhp += 15; 或 并将它们嵌入xml结构中,以便项目或对话行可以包含检查和可执行代码,使rpg类更像一个解释器和接口。这样做可能吗?ActionScript 3不再包含eval函数,因此无法直接执行。但是,您可以使用自己的简单解释器手动执行此操作。大概是这样的: var item:XML =

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

我在谷歌上搜索了一下,但没找到多少

我想做的是做一些简单的陈述,比如:

playerhp += 15;


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

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

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

我不确定我是否理解你想如何设计这个想法

如果您想使用类似于eval的东西,那么没有本地的方法可以做到这一点。 尽管如此,您可以检查这一点,并查看和示例

现在,出于许多原因,我不建议使用这种东西。再想一想,你会自己想出一些办法的

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

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

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
    }
}
<command id="hurt" params="-15"/>