2009-08-10 11 views
12

내 mxml에서 많은 수의 개체에 동적으로 액세스하려고합니다. 이름/ID를 구성 할 수 있습니다. 자바에서는 객체를 얻기 위해 getElementById(ID)을 할 수 있습니다. 어떻게해야합니까? Actionscript?Actionscript에서 getElementById가 해당합니까?

너무 성 가시기 때문에 실제로는 getChildByName을 할 수 없습니다. 나는 자식 D가있는 자식 B가있는 객체 A에 액세스 할 수 있습니다. 자식 D가있는 자식 & F (이름이 관련되어 있음) A의 이름으로). 나는 D를 얻고 싶다, & F. getChildByName 인 경우, 나는 B를 얻고 C를 얻은 다음 D, E & F를 얻는다. 그리고 B에 새로운 부모를 추가한다면 mxml 계층 구조를 바꾼다.), 코드가 깨질 것입니다 ... 그리고 나는 정말로 그렇게하고 싶지 않습니다.

어떤 조언이 필요합니까? Thx!

업데이트 : 내가 물어 보는 바는 이름과 ID가 둘 다 주어지면 개체 D에 어떻게 액세스해야합니까?

답변

19

, 당신은 같은 것을 할 수 있어야한다 :

var에 ELEM : Type_of_E =이 [ "constructed_id_of_E" ];

문서의 하위 문서에있는 경우 parentDocument [ "constructed_id_of_E"]를 사용하여 요소를 가져옵니다.

+0

고마워요! 정확히 내가 무엇을 찾고 있었는지! – sc45

+0

@ 크리스티안 Ivascu IMC에서 좋은 :) –

0

MXML을 사용하는 경우 flex를 사용해야합니다. Flex를 사용하는 경우 항목 ID를 할당 할 수 있습니다.

예 : 아이들이 문서의 "등록 정보"와 같은 사실 때문에

<mx:Button 
     id = "myButton" 
     label = "OK" 
     click = "{myLabel.text = 'Button Pressed!'}"/> 

<mx:Label 
     id = "myLabel" 
     text = "Push the button!"/> 
+0

참고 : 위 내용은 다음과 동일합니다. var myButton : Button = new Button(); mxml 구성 요소에 id를 지정하면 실제로 ActionScript 스크립트 변수를 만들고 있습니다 –

2

실제로 ID를 할당하면 주어진 요소의 public 멤버 변수가됩니다. 이 ID가 변수 이름으로의에 의해 당신은 그것을 액세스 할 수 있습니다 당신이

<mx:Canvas><mx:Label id="myLabel" /></mx:Canvas> 

이있는 경우 예를 들어 그래서 :

myLabel.text = "Hello world!"; 

은 더 설명이 필요한 경우 알려주세요. 이것이 당신의 요구 사항이 아니라면, 자유롭게 의견을 말하면 나는 그것에 또 다른 찰싹을 할 것입니다.

감사합니다, 크리스

업데이트 : 모든 MXML 구성 요소에 관계없이,이 방법으로 액세스 할 수있는 그들이

1

플렉스 4이 일을합니까 얼마나 많은 부모?

내가 MXML에서 만든 빈 격자를했습니다, 다음 ActionScript에서 나는 순서로 추가

  • gridrow을 (그리드 내부) (ID = "에는 myGrid")
  • 의 GridItem (내부 gridbow)
  • 동적으로 생성 된 ID (예 : "cmb"+ i 여기서 i는 정수)가있는 combobox (gridItem 내부).

내가 해봤이 [ "CMB"0]에는 myGrid [ "CMB"0], 위해서 parentDocument [ "CMB"+0] 나는 "ReferenceError가 받고 있어요 때마다 : 오류 # 1069 : 속성 cmb0이 adminUsers에없고 기본값이 없습니다. ""또는 ReferenceError : 오류 # 1069 : mb.containers.Grid에 속성 cmb0이없고 기본값이 없습니다.

참고 : "adminUsers"는 내 응용 프로그램의 이름

편집 : 누군가를 도울 수 있다면, 나는 다른 방법으로 내 문제를 해결했습니다. 는 지금은

<mx:Grid id="myGrid"> 
       <mx:Repeater id="repeater" dataProvider="{lst1}"> 
        <mx:GridRow> 
         <mx:GridItem><mx:Label text="{repeater.currentItem.name}" /></mx:GridItem> 
         <mx:GridItem><mx:ComboBox id="cmb" dataProvider="{lst2}" labelField="comment" /></mx:GridItem> 
        </mx:GridRow> 
       </mx:Repeater> 
      </mx:Grid> 

지금 내가 좋아하는 뭔가 루프에서 내 콤보에 액세스 할 수있는 리피터 내 그리드를 작성하고 있습니다 :

var combo:ComboBox = cmb[i] as ComboBox; 

:

1

당신은 getChildByName("childname")

을 사용할 수 있습니다
관련 문제