1

私は子供向けのゲームを書いていますが、それは文字ブロックで構成されています。

子供は単語を綴るために正しい順序(次のシルエット)にブロックを配置する必要があります

今私の質問は私が2つのアレイを持っているということです。

var myLetters = new Array(
    new BlockC(),
    new BlockA(),
    new BlockB()
);

public static var myLetters2 = new Array(
    new BlockC(),
    new BlockA(),
    new BlockB()
);

つまり、これはCABという単語を綴る設定になっていることがわかります。

私がやりたいのは、単語を入れることができる文字列変数を用意してから、コードで配列を正しい順序で埋めることです。

すなわち

var word:String = "CAB";

これが理にかなっていて、私があなたたちからいくつかの良い助けを得ることができることを願っています

ありがとう

4

3 に答える 3

1

対応するクラスの書簡集が必要なようです。したがって、あなたは自分自身を次の構造のオブジェクトにします。

private static var LETTERS:Object={A:BlockA,B:BlockB,C:BlockC};

次に、単語を1文字で分割し(単語から1文字を新しい文字列にコピー)、を介して対応するクラスを取得しLETTERS[letter]、を介してそのクラスの新しいインスタンスを取得できます。new LETTERS[letter]();

于 2012-09-14T14:04:22.557 に答える
1

私が質問を正しく理解している場合、これを行う1つの方法があります:

var word:String = "CAB";

var letterClassMapping:Object = {
 "C":BlockC,
 "A":BlockA,
 "B":BlockB
};

var myLetters:Array = [];

for(var i:int=0; i<word.length; i++) {
  myLetters.push( new letterClassMapping[word.charAt(i)]() );
}

別の方法は、getDefinitionByNameを使用してクラスタイプを取得することです。

var classType:Class = getDefinitionByName("Block" + word.charAt(i)) as Class;
myLetters.push(new classType());
于 2012-09-14T14:08:40.397 に答える
1

オブジェクトにtoString()関数を作成し、配列を結合することもできます。

クラス作成関数:

public class BlockA {

        public function toString():String {
           return "A";
        }
}

そして、あなたが配列アイテムを結合することができるより:

var arr:Array = [new BlockA , new BlockB , new BlockC];
trace(arr.join(""));
// and compare to Your string:
arr.join("") == word;
于 2012-09-14T14:30:53.803 に答える