我对此感到非常沮丧。
首先,让您理解我的代码 - 我的目标是让用户随机选择一个单词,以每个字母都位于盒子内的方式出现在他们面前。 然后,如果用户单击名为“选择一个单词”的按钮,则会选择另一个单词并出现正确数量的框。
我有一系列这样的单词:
var word_group_1 = ["abolsh", "absorbent", "betrayal", "frutish", "commensurate", "eonfident", "zite"]
我正在使用这个函数从该数组中选择一个随机单词,然后拼接它..效果很好:
function random_word_genereator() {
random = randomNumber(0, word_group_1.length);
//putting the chosen word from array in the chosen word variable
chosen_word = word_group_1[random]
//after we used the chosen word were removing it from the away
word_group_1.splice(random, 1)
//splitting the chosen word into an array
chosen_word_letters_arry = chosen_word.split("")
}
单击“选择一个单词”按钮,我正在创建库中的 Movieclip 的 5 个实例(只是一个用于在其中放置文本的蓝色框),其中的文本如下所示:
function create_boxes(e)
{
//to know which word has been displayed to the user//
old_word=chosen_word
random_word_genereator()
for (i=0;i<chosen_word.length;i++){
cell_boxes = new lib.cell_box();
stage.addChild(cell_boxes)
cell_boxes.name="cell_box"+i;
cell_boxes.x=(xlocation * i) + 50
cell_boxes.y = 80;
output = new createjs.Text();
cell_boxes.addChild(output)
output.text=chosen_word_letters_arry[i]
}
第一次点击一切正常正如您可以在此处查看。
正在选择的单词并显示在舞台上
我的问题是当我再次单击“选择一个单词”按钮时 它没有删除正确数量的盒子。
我将可见的 false 放入保存“旧词”(我需要删除的词)的框中 但是正如你可以在这里看到的,当我再次点击之后,它变得一团糟。
有时它会起作用,从 12 个字母的单词切换到 4 个字母的单词。 但这应该是运气。
简单的答案将插入并运行到您的代码中:
js
...
//to know wichh word has been displayed to the user//
old_word=chosen_word
random_word_genereator()
for (i = 0; i < stage.numChildren; i++) // Loop through all children of the stage
if (stage.getChildAt(i) is lib.cell_box) // Checks if the child is a lib.cell_box
stage.removeChildAt(i--); // Removes child from stage and decrements i
for (i=0;i<chosen_word.length;i++){
...
原始答案(更清晰的代码,一些重组):
最好将这种逻辑分解为步骤。
var boxes:MovieClip = new MovieClip();
boxes.y = 80;
addChild(boxes);
...
function createBoxes(word:String):void {
// Remove boxes first
while (boxes.numChildren > 0)
boxes.removeChildAt(0);
// Add boxes
for each(var c:String in word.split("")) {
var box:Box = new Box(c);
box.x = boxes.width + 50;
boxes.addChild(box);
}
}
然后在 Box 类中设置文本。