我正在處理一個簡單的文本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
}
}