2011-04-01 98 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"/>