我在一个名为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;
我收到错误:无法在String上创建选中的属性。我不明白为什么Flash没有将它们视为对象名称.. !!如果我试试
cbHolder.cbSearchArray[i].selected = false;
我收到错误:术语未定义且没有属性。
我完全失去了,经过一整天的晃眼,我没有遇到任何有用的事情。希望有人能指出我正确的方向,我会在这里张贴并寻求帮助。
答案 0 :(得分:0)
您可以拥有一个包含对象引用的数组,而不是具有对象名称的数组。每次创建一个复选框时,将其添加到复选框数组中,否则它将尝试修改字符串上的.selected属性,这将合理地抛出您正在获得的错误。
以下是您可以做的事情:
var cbArray:Array = new Array();
function createCheck():void{
var cb:CheckBox = new CheckBox();
cbArray.push(cb);
}
然后你可以在迭代它时引用cbArray [i] .selected。
如果您愿意,另一种方法是使用getChildByName方法获取复选框。
var cb:CheckBox = cbHolder.getChildByName(cbSearchArray[i]) as CheckBox;
cb.selected = false;
但是我强烈建议不要采用这种方法,因为使用命名可以解决许多潜在的问题。我建议您只使用参考。