actionscript-3 - 仅从场景中删除对象的一组实例

标签 actionscript-3 flash-cs5

我在 ActionScript 3 项目中遇到问题,我要在图表中以纯文本形式输出一堆数据。但这不是问题。问题是当用户更改他想要显示的数据类型时。然后,我将删除图中当前显示的列,并添加新的列。但我的代码删除了所有列,因此根本没有图表!

我已经在 Flash CS5 中完成了这一切,列是我制作的对象(矩形)的实例,我刚刚将其添加到舞台上。所有的实例都被添加到容器“container”中。当我想删除它们并添加新的时,我使用:

var container = new Sprite(); // The container for my diagram
function emptyContainer() {
if (container.numChildren > 0) {
    container.removeChildAt(0); 
  }
}

这有效。

我有 switch 语句,它根据用户输入添加不同的列。该对象(矩形)的名称是“soyle”。实例的名称是“stolpe” (顺便说一句,我是挪威人,所以这就是那些奇怪的词的处理方式)

  function fChange(event:Event) {
textToBeReturned = ""; 

  switch (treCbox.selectedItem.label) {
case "Furu":
    for (var a = 1; a < table.length; a++ ){
        textToBeReturned += "I år: " + table[a][0] + " - " + table[a][1] + " millioner trær." + "\n";
        // Diagram
        var stolpe = new soyle;
        stolpe.width = table[a][1];
        stolpe.x = 20;
        stolpe.y = 100 + (a * 30);
        container.addChild(stolpe);

        // Description for the columns
        var textbox = new TextField;
        textbox.text = "År " + table[a][0];
        textbox.x = stolpe.width + 30;
        textbox.y = stolpe.y;
        container.addChild(textbox);
    }
    break;
case "Gran":
    for (var b = 1; b < table.length; b++ ){
        textToBeReturned += "I år: " + table[b][0] + " - " + table[b][2] + " millioner trær." + "\n" ;

        var stolpe = new soyle;
        stolpe.width = table[b][1];
        stolpe.x = 20;
        stolpe.y = 100 + (b * 30);
        container.addChild(stolpe);

        // Description for the columns
        var textbox = new TextField;
        textbox.text = "År " + table[b][0];
        textbox.x = stolpe.width + 30;
        textbox.y = stolpe.y;
        container.addChild(textbox);
    }
    break;
case "Lauvtre":
    for (var c = 1; c < table.length; c++ ){
        textToBeReturned += "I år: " + table[c][0] + " - " + table[c][3] + " millioner trær." + "\n" ;

        var stolpe = new soyle;
        stolpe.width = table[c][1];
        stolpe.x = 20;
        stolpe.y = 100 + (c * 30);
        container.addChild(stolpe);

        // Description for the columns
        var textbox = new TextField;
        textbox.text = "År " + table[c][0];
        textbox.x = stolpe.width + 30;
        textbox.y = stolpe.y;
        container.addChild(textbox);
    }
    break;
}   
txtReturn.text = textToBeReturned; 
};

我想知道在哪里放置删除所有子项的函数,以删除之前添加的那些子项。无论我将函数放在哪里(在 fChange 的开头,在每个案例的开头),都没有显示任何图表,无论是新的还是旧的。

当然有一个包含数据的数组,但我不会发布它,因为它不相关。

感谢您的宝贵时间,并提前感谢您的帮助! :)

最佳答案

这里有几个问题。我假设您想在交换机中添加新子项之前从容器 MC 中删除所有子项。 (提示下次,尝试只发布您使用的代码。这里的 switch 语句很大而且令人难以承受。它也不是真正相关)

您的函数emptyContainer实际上并未删除所有子级,它仅删除索引0处的一个。这需要位于循环内部。

function emptyContainer() {
   while (container.numChildren > 0) { //changed the if to a while. This will run until there are no children left in container
      container.removeChildAt(0); 
  }
}

您需要在 fChanged 函数中调用这第一件事

function fChange(event:Event) {
     emptyContainer()

  /* rest of function */

}

尝试一下并让我知道它是如何工作的。

关于actionscript-3 - 仅从场景中删除对象的一组实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108418/

相关文章:

actionscript-3 - 将所有错误定向到文本字段

actionscript-3 - AS3 - 如何复制 Sprite / Sprite 图形?

css - 如何设置字体样式浅色?

actionscript-3 - 游戏 session 声音播放/录音

Flash CS5 崩溃损坏的文件。如何将我的 xml 库 Assets 恢复到新的 FLA 中?

actionscript-3 - 访问 SimpleButton 子项

actionscript-3 - 使用定义时定义的参数创建一组匿名函数

java - 调用未知的构造函数(反射替换)c++

actionscript-3 - 通过 ActionScript 3在时间轴上引用现有声音对象

javascript - Photoshop 脚本 : Move an image to position x, y