从字符串执行 as3 代码
Posted
技术标签:
【中文标题】从字符串执行 as3 代码【英文标题】:executing as3 code from a string 【发布时间】:2011-07-27 15:35:53 【问题描述】:我正在开发一个简单的文本 rpg,我将所有数据对象存储为 xml 文件,但我需要能够为许多事情运行一些简单的语句。
我已经做了一些谷歌搜索,但我没有想出太多。
我想做的是采取简单的陈述,例如:
playerhp += 15;
或
if(playerisvampire == 1) blah blah;
并将它们嵌入到 xml 结构中,以便项目或对话行可以包含检查和可执行代码,从而使 rpg 类更像是解释器和接口。这样的事情可能吗?
【问题讨论】:
【参考方案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"/>
【讨论】:
以上是关于从字符串执行 as3 代码的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 AS3从字符串中删除非数字字符