1

私は単純なテキスト RPG に取り組んでおり、すべてのデータ オブジェクトを xml ファイルとして保存していますが、多くのことに対していくつかの単純なステートメントを実行できる必要があります。

私はいくつかのグーグルをしましたが、あまり思いつきませんでした。

私がやろうとしているのは、次のような簡単なステートメントを取ることです。

playerhp += 15;

また

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

それらを xml 構造内に埋め込むことで、項目または会話行にチェックと実行可能コードを含めることができ、rpg クラスをより多くのインタープリターおよびインターフェースとして残すことができます。そのようなことは可能ですか?

4

2 に答える 2

0

ActionScript 3 には eval 関数が含まれなくなったため、これを直接行うことはできません。ただし、独自の単純なインタープリターをロールして、これを手動で行うことができます。このようなもの:

var item:XML =
    <health_item>
        <action name="hp_change" value="15"/>
    </health_item>;

ActionScript でアクション名を確認し、対応する関数を見つけて、「値」引数で呼び出します。

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
    }
}
于 2011-04-01T12:47:50.070 に答える
0

このアイデアをどのように構築したいのか、よくわかりません。

eval に似たものを使用したい場合、これを行うためのネイティブな方法はありません。ただし、このライブラリを確認して、ここで例を確認できます

さて、多くの理由から、そのようなものを使用することはお勧めしません. もう少し考えてみると、自分でいくつかを理解できます。

シンプルなパーサーを実装して xml からコマンドをロードし、提供されたデータを解釈して対応するコマンドを実行することをお勧めします。

<command id="hurt" params="-15"/>
于 2011-04-01T12:52:28.597 に答える