我正在写一个儿童游戏,它由字母块组成。
孩子必须按照正确的顺序(按照轮廓)拼写单词以拼写单词
现在我的问题是我有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”;
希望这是有道理的,我可以从你们那里得到一些好帮助
由于
答案 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;