所以我试图能够改变我现在拥有的togglebutton数组的可见性。使用flex界面工具,我制作了10个切换按钮,并将其来电者ID命名为b1,b2,b3等。然后我将这些ID放入我提到的数组中。我还有一个数字步进器,我将被叫ID改为numericstepper。
var buttonArray: Array= new Array (b1,b2,b3,b4,b5,b6,b7,b8,b9,b10)//global ;
protected function numericstepper_changeHandler(event:Event):void {
var x:int=0
var y:int
x=numericstepper.value //the value of the numericstepper
for (y=0; y<x; y++) {
buttonArray[y].visible= false // trying to change the visibility of each button in the array
}
但这不起作用并给我一个错误。实际上,即使我只是追踪buttonArray [1],它也会让我无效....不知道该怎么做。
新手编码器在这里所以请指教!
答案 0 :(得分:0)
好吧我可能知道问题是什么:你是在一个组件中创建数组变量,但那时(构建组件时)按钮尚未初始化(即== null
)。通常的做法是在使用内部组件之前等待组件的一些生命周期事件。通常是creationComplete
事件。
类似的东西:
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="onCreationComplete()">
<fx:Script><![CDATA[
private var buttonArray:Array;
private function onCreationComplete():void {
buttonArray = [b1, b2, b3, b4, b5, b6, b7, b8, b9, b10];
}
protected function numericstepper_changeHandler(event:Event):void {
const x:int = numericstepper.value;
for (var i:int = 0; i < x; i++) {
buttonArray[i].visible = false;
}
}
]]></fx:Script>
<!-- inner components here -->
</s:Application>
答案 1 :(得分:0)
这确实是一个新手错误。您需要了解变量和对象之间的区别。 b1是一个变量,一个ToggleButton是一个对象,一个变量保存对象的引用但不是对象本身,它只是一个引用。因此,在您的情况下,您正确地将您的变量添加到数组,但此时这些变量不引用任何对象,因此在这种情况下,它们的默认值(它们真正引用的)是“null”。 null是一种特殊类型的对象,它没有方法也没有属性,可以用来代替任何复杂的对象。
当你将这些变量b1,b2等添加到数组中时,你真正添加了它们引用的内容,你不要将变量本身添加到数组中,这样无论变量引用在数组中得到什么,所以在你的情况下它是'null'
要确保添加ToggleButton对象,您可以简单地延迟所有内容并检查值,例如:
var buttonArray: Array;
protected function numericstepper_changeHandler(event:Event):void
{
if(!buttonArray && b1)//b1 is not null so time to fill the array
{
buttonArray = [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10];
}
else if(!b1)
{
return;//still no b1 so exit.
}
const x:int = numericstepper.value;
for (var i:int = 0; i < x; i++)
{
buttonArray[i].visible = false;
}
}