我正在处理一个简单的文本RPG,并将所有数据对象都存储为xml文件,但我需要能够为许多事情运行一些简单的语句。从字符串执行as3代码
我已经做了一些Google搜索,我还没有拿出很多。
我试图做的是采取简单的语句,如:
playerhp += 15;
或
if(playerisvampire == 1) {blah blah;}
并将它们嵌入XML结构的内部,使一个项目或会话行可以包含检查和可执行代码离开RPG类作为更多的解释器和接口。这样的事情可能吗?
我正在处理一个简单的文本RPG,并将所有数据对象都存储为xml文件,但我需要能够为许多事情运行一些简单的语句。从字符串执行as3代码
我已经做了一些Google搜索,我还没有拿出很多。
我试图做的是采取简单的语句,如:
playerhp += 15;
或
if(playerisvampire == 1) {blah blah;}
并将它们嵌入XML结构的内部,使一个项目或会话行可以包含检查和可执行代码离开RPG类作为更多的解释器和接口。这样的事情可能吗?
ActionScript 3不再包含eval函数,所以这是不可能的。但是,您可以推出自己的简单解释器来手动执行此操作。事情是这样的:在ActionScript
var item:XML =
<health_item>
<action name="hp_change" value="15"/>
</health_item>;
检查行动的名字,找到相应的功能,并以“价值”的说法称之为:
for each (var action:XML in item.action) {
var actionName:String = [email protected];
//switch variant
switch (actionName) {
case "hp_change":
hpChange([email protected]);
break;
//and so on for other known actions
}
//direct call by name variant
if (hasOwnProperty(actionName)) {
this[actionName]([email protected]);
} else {
//report error
}
}