Actionscript 3 取消选中多个复选框,如3所示

Actionscript 3 取消选中多个复选框,如3所示,actionscript-3,checkbox,Actionscript 3,Checkbox,我在舞台上有一个名为cbHolder的占位符movieclip,还有一些代码创建了一系列复选框,总共33个,为每个复选框分配一个“on CHANGE”事件侦听器,然后将它们添加到cbHolder MC中。事件侦听器触发函数iChanged,如下所示: var cbSearchArray:Array = new Array(); function iChanged(event:Event):void{ if (event.target.selected == true){ trac

我在舞台上有一个名为cbHolder的占位符movieclip,还有一些代码创建了一系列复选框,总共33个,为每个复选框分配一个“on CHANGE”事件侦听器,然后将它们添加到cbHolder MC中。事件侦听器触发函数iChanged,如下所示:

var cbSearchArray:Array = new Array();
function iChanged(event:Event):void{
if (event.target.selected == true){
        trace(event.target.name + " is checked");
        cbSearchArray.push(event.target.name);
        trace("array is:" + cbSearchArray);
        }
        else{
            trace(event.target.name + " is unchecked");
            cbSearchArray.splice(cbSearchArray.indexOf(event.target.name), 1);
            trace("array is:" + cbSearchArray);
            }
    }
这一切都很好,添加和删除数组元素就像一件拥有的东西,我真的很高兴。我不知道我心里有它。。。但我现在真正坚持的是一种取消选中所有复选框或通过按钮选中所有复选框的有效方法。当我尝试使用for循环遍历数组并尝试使用设置复选框时

cbSearchArray[i].selected = false;
我收到错误:无法在字符串上创建选定的属性。我不明白为什么Flash不将它们视为对象名。。!!如果我尝试

cbHolder.cbSearchArray[i].selected = false;
我得到一个错误:一个术语没有定义,没有属性


我完全,完全迷路了,在看了一整天之后,我没有发现任何有用的东西。希望有人能给我指出正确的方向,我将其发布在这里并寻求帮助。

您可以使用带有对象引用的数组,而不是带有对象名称的数组。每次创建复选框时,请将其添加到您的复选框数组中,否则它将尝试修改字符串上的.selected属性,这将合理地抛出您得到的错误

以下是您可以做的一些事情:

var cbArray:Array = new Array();

function createCheck():void{
    var cb:CheckBox = new CheckBox();
    cbArray.push(cb);
}
然后您可以引用cbArray[i]。当您在其中进行迭代时选择它

如果愿意,还可以使用getChildByName方法获取复选框

var cb:CheckBox = cbHolder.getChildByName(cbSearchArray[i]) as CheckBox;
cb.selected = false;

但是,我强烈建议不要使用这种方法,因为使用命名可能会给您带来许多潜在问题。我建议你只使用参考资料

我试过一些接近你第一次求婚的东西。然而,通过使用push(cb);数组只是用[object CheckBox]填充,所以使用.push(cb.name)可以得到正确的值。然而我仍然收到错误,无法在字符串上创建所选属性。是否确实需要一个包含所有属性名称的数组?[对象复选框]是对复选框对象的引用,您可以通过数组访问其任何属性。cbArray[i]。姓名,cbArray[i]。已选定,等等。先生,您是冠军,我对您感激不尽。我从来都不知道数组在不使用.name的情况下保存了所需的所有信息。但是,我确实需要这些名称,因为这些名称将存储在一个数据库中,与库存项目相对应。这是我的下一个任务。。。正在将数组或值获取到SQL。。。祝我好运,因为我想我需要它。。再次非常感谢Roroit大师这是我的荣幸!祝你好运。