从字符串单词订购数组的最简单方法 - 有趣

时间:2012-09-14 13:56:59

标签: arrays string actionscript-3

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

孩子必须按照正确的顺序(按照轮廓)拼写单词以拼写单词

现在我的问题是我有2个阵列。

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

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

所以你看到这是拼写单词C A B的设置。

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

即。

var word:String =“CAB”;

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

由于

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 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());

答案 2 :(得分:1)

您还可以在Your对象中创建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;