我正在写一个儿童游戏,它由字母块组成。
孩子必须按照正确的顺序(跟随剪影)放置积木来拼写单词
现在我的问题是我有 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";
希望这是有道理的,我可以从你们那里得到一些很好的帮助
谢谢
如果我正确理解了这个问题,这里有一种方法可以做到:
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());
你似乎需要一个带有相应类的字母集合。因此,您使自己成为以下结构的对象:
private static var LETTERS:Object={A:BlockA,B:BlockB,C:BlockC};
然后你用单个字母拆分你的单词(将单词中的一个字母复制到一个新字符串中),然后你可以通过LETTERS[letter]
获得相应的类,并通过new LETTERS[letter]();
获得该类的新实例
你也可以在你的对象和 thant join 数组中创建 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;