2011-04-01 65 views
1

我正在处理一个简单的文本RPG,并将所有数据对象都存储为xml文件,但我需要能够为许多事情运行一些简单的语句。从字符串执行as3代码

我已经做了一些Google搜索,我还没有拿出很多。

我试图做的是采取简单的语句,如:

playerhp += 15; 

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

并将它们嵌入XML结构的内部,使一个项目或会话行可以包含检查和可执行代码离开RPG类作为更多的解释器和接口。这样的事情可能吗?

回答

0

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

我不知道我理解你想如何建筑师这个想法。

如果你想使用类似于eval的东西,那么没有原生的方式来做到这一点。 虽然,你可以检查这个library看到和example here

现在,我不会推荐使用这样的事情有很多原因。多想一想,你会自己找出一些。

我建议实行从你的XML一个简单的解析器和load命令,那么就解释提供的数据,并执行相应的命令:

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