提前谢谢你, 我点击按钮后尝试获取阵列上按钮的位置。该按钮是组组件的一部分。
组件是这样的:
<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();" />
这实际上可行吗?
答案 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);
}