(Adobe Animate actionscript) 如何使用 name 、 arry 和 lib() 从舞台中移除特定符号?

Posted

技术标签:

【中文标题】(Adobe Animate actionscript) 如何使用 name 、 arry 和 lib() 从舞台中移除特定符号?【英文标题】:(Adobe Animate actionscrtip) how can iRemove spesific Symballl's from the stage using name , arry , and lib()? 【发布时间】:2020-04-01 11:21:10 【问题描述】:

我对此感到非常沮丧。

首先让您了解我的代码 - 我的目标是让用户让随机选择的单词以每个字母都位于一个框内的方式出现在他面前。 那么如果用户点击一个名为“Pick a word”的按钮,就会选择另一个单词并出现正确数量的框。

我有一个这样的单词数组:

   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]
 //affter we used the chosen word were removing it from the awway
word_group_1.splice(random, 1)
//spliting the chosen word into an array
chosen_word_letters_arry = chosen_word.split("")

在“选择一个单词”的按钮单击中 - 我在我的 libiray 中创建了 5 个 Movieclip 实例(只是一个蓝色框用于在其中放置文本),其中的文本如下:

function create_boxes(e)



//to know wichh 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]




第一次点击As You Can View Here时一切正常。

舞台上被选中并显示的单词

我的问题是当我再次单击“选择一个单词”按钮时 它没有删除正确数量的框。

我将可见的错误放在包含“旧词”的框中(我需要删除的那个) 但是As you can se here After i click again 搞砸了。

有时它的工作,从 12 个字母的单词切换到 4 个单词。 但这应该是运气。大声笑我很想让它工作!它用于我的学校项目..

请帮帮我!

【问题讨论】:

【参考方案1】:

即插即用的简单答案:

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 类中设置文本。

【讨论】:

首先感谢您的回答。我不知道动作脚本中的类是什么。在你刚刚写的空白处。它可以在actionscript 2上使用吗?你有我看不懂的网站吗?? 我假设您使用的是 AS3。编辑我的答案。 void 表示函数不会返回任何内容。 doSomething():void 不会返回任何内容,但如果 doSomething():String 是您的返回类型,您可以像使用变量一样使用它。以var word:String = generateWord(); 为例。

以上是关于(Adobe Animate actionscript) 如何使用 name 、 arry 和 lib() 从舞台中移除特定符号?的主要内容,如果未能解决你的问题,请参考以下文章

Adobe Animate EXE 和分析

Adobe Animate/Flash ios 应用程序上传器

Adobe Animate JS 输出文件

Adobe Animate(An)2023软件安装包下载及安装教程

Adobe Animate 缺少出口合规性 ITSAppUsesNonExemptEncryption False

如何:Adobe Animate - gotoAndStop();点击按钮