1

我正在写一个儿童游戏,它由字母块组成。

孩子必须以正确的顺序(按照剪影)将积木拼出单词

现在我的问题是我有 2 个数组。

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

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

所以你看到这是设置拼写单词 CA B。

我想做的是有一个字符串变量,我可以将单词放入其中,然后让代码以正确的顺序填充数组。

IE

变种词:字符串=“CAB”;

希望这是有道理的,我可以从你们那里得到一些很好的帮助

谢谢

4

3 回答 3

1

您似乎需要一个带有相应类的字母集合。因此,您使自己成为以下结构的对象:

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

然后你用单个字母拆分你的单词(将一个单词中的一个字母复制到一个新字符串中),然后你可以通过 获得相应的类LETTERS[letter],并通过该类的新实例new LETTERS[letter]();

于 2012-09-14T14:04:22.557 回答
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 回答
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 回答