【问题标题】:AS3 I can't get removeChild to delete my items when they are listed in ArrayAS3 当我的项目列在数组中时,我无法让 removeChild 删除我的项目
【发布时间】:2021-02-03 17:58:51
【问题描述】:

在 Animate 上使用 ActionScript 3,我正在尝试使用 Arrayfor 循环从舞台上删除一堆项目。我实际上是从这个站点下载了这段代码,但它似乎对我不起作用。它只会删除一个项目,不会删除其他项目。当我重绘舞台时,它根本不会删除任何东西。我有另一个功能按钮将重新启动(重绘)游戏,我正在使用gotoAndPlay() 重绘。仅供参考,“方块”是精灵,“myTFs”是“配对”在一起成为按钮的文本字段。我做错了什么?

function mainFunc(): void {
    var btnsArray: Array = new Array("square", "myTF3", "square2", "myTF2", "square4", "myTF4");
    for (var ii = 0; ii < btnsArray.length; ii++) {
        removeChildAt(btnsArray[ii]);
        btnsArray.length = 0;
    }
}

【问题讨论】:

  • removeChildAt() 采用整数索引。你给它一个字符串。使用getChildByName()removeChild()
  • 另外,您在第一次迭代时将 Array 的长度设置为零,第一次迭代后 Array 中没有任何内容。跨度>

标签: actionscript-3 flash adobe adobe-animate


【解决方案1】:

如果您有 DisplayObject 的名称的 Array 想要批量操作(例如从显示列表中删除或其他),您可以执行以下操作:

var A:Array = ["square", "myTF3", "square2", "myTF2", "square4", "myTF4"];

// Iterate over items of the Array.
for each (var aName:String in A)
{
    // Obtain a reference to the object by its instance name.
    var aChild:DisplayObject = getChildByName(aName);
    
    // Check if it is a valid instance before removing to avoid errors.
    if (aChild)
    {
        removeChild(aChild);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2021-05-17
    • 2020-06-25
    • 1970-01-01
    • 2023-03-08
    • 2017-08-01
    • 2018-08-04
    相关资源
    最近更新 更多