2015-02-05 2 views
0

미리 감사드립니다. 버튼을 클릭 한 후 배열의 버튼 위치를 가져 오려고합니다. 버튼은 그룹 구성 요소의 일부입니다. 구성 요소에서 indexOf 배열의 버튼 클릭 위치 가져 오기

<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

event.currentTarget 버튼을 클릭했지만 해당 버튼을 배열로 푸시하지 않았습니다. comp1을 Array에 푸시했습니다. 실제로는 해당 버튼의 부모입니다.

옵션 1 - 대신 부모의 배열에 버튼을 눌러 :

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); 
} 
+0

당신에게 카르마 감사합니다, Option2 완벽하게 작동합니다. 나는 너의 도움에 매우 감사한다. –

+0

당신을 진심으로 환영합니다. 만족 스럽다면 질문에 답변으로 표시하십시오. – Karmacon

관련 문제