从组件获取indexOf数组上的Button单击位置

时间:2015-02-05 11:48:45

标签: actionscript-3 flash flex

提前谢谢你, 我点击按钮后尝试获取阵列上按钮的位置。该按钮是组组件的一部分。

组件是这样的:

<fx:Metadata>
    [Event(name="eventoConcluido", type="flash.events.Event")]
</fx:Metadata>
<fx:Script>
    <![CDATA[
        protected function endEventBtn(event:MouseEvent):void
        {
            var eventTerminado:Event = new Event("eventoConcluido");
            dispatchEvent(eventTerminado);

            //this.removeAllElements();
        }
    ]]>
</fx:Script>

<s:Button id="endEvent" label="Test" color="black" width="100" click="endEventBtn(event);" />

在应用程序中尝试获取此信息:

private var myArray:Array = [];
private var myButton:Button;
protected var comp1:test;

public function addButton():void {  

    comp1= new test();
    myGroup.addElement(comp1);
    myArray.push(myGroup.addElement(comp1));
    comp1.endEvent.addEventListener(MouseEvent.CLICK, getButton);
}

public function getButton(event:MouseEvent):void {
    var ij:int= myArray.indexOf(event.currentTarget);
    trace(ij)// always get -1;
}



<s:Button label="Add Button" click="addButton();" />

这实际上可行吗?

1 个答案:

答案 0 :(得分:1)

event.currentTarget引用了单击的Button,但是没有将该Button推入数组。你将comp1推入了Array,这实际上是Button的父级。

选项1 - 将Button推入数组而不是父类:

public function addButton():void {
    comp1 = new test();
    myGroup.addElement(comp1);
    myArray.push(comp1.endEvent);
    comp1.endEvent.addEventListener(MouseEvent.CLICK, getButton);
}

public function getButton(event:MouseEvent):void {
    var ij:int= myArray.indexOf(event.currentTarget);
}

选项2 - 对父项而不是子项进行索引检查:

public function addButton():void {
    comp1 = new test();
    myGroup.addElement(comp1);
    myArray.push(comp1);
    comp1.endEvent.addEventListener(MouseEvent.CLICK, getButton);
}

public function getButton(event:MouseEvent):void {
    var ij:int= myArray.indexOf(event.currentTarget.owner);
}