2011-04-11 2 views
0

나는 list와 몇 개의 버튼을 배치하는 mxml 클래스를 가지고있다.FLEX : AS3 외부 클래스 파일에서 MXML 클래스를 참조하는 방법은 무엇입니까?

나는 두 가지 일을하고 싶습니다 :

  • 은 외부 파일 인 클래스에서 목록에 액세스하려면.
  • "스테이지"(전역 속성)를 가져와야하므로 내 as3 클래스를 자식 (시각적 요소)으로 추가합니다.

을 통해 mxml에 너무 많은 코드를 포함시키고 싶지 않습니다.

그래서,

<?xml version="1.0" encoding="utf-8"?> 
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="800" minHeight="600" width="800" visible="true"> 
     <fx:Style source="Main.css"/> 
     <fx:Declarations> 
      <!-- Place non-visual elements (e.g., services, value objects) here --> 
     </fx:Declarations> 
     <fx:Script> 
      <![CDATA[ 
       private var menuController:CMenuController= new CMenuController(); 
      ]]> 
     </fx:Script>  
     <s:List x="598.35" y="100.55" width="178" height="324" id="ListBox"> 
      <s:layout> 
       <s:VerticalLayout/> 
      </s:layout> 
     </s:List> 
</s:Application> 

따라서 MXML의 예는, 나는 CDATA에 입력 된대로 CMenuController에서 옵니다에 접근하고 싶습니다. 게다가, 나는 Sprite와 Shapes를 addChild() 메서드를 CMenuController에 추가 할 수 있어야합니다.

답변

0

Sprite 및 Shapes를 UIComponent에 먼저 추가 한 다음 Flex 코드에 추가해야합니다.

외부 as3 클래스에서 Flex 코드에 액세스하려면 as3 클래스에서 참조하십시오. 이처럼 :

menuController.listReference = LISTID;

0

나는 시각적 요소를 응용 프로그램 논리와 분리하는 개념을 얻지 못한다고 생각합니다. 당신이 성취하고자하는 것은 스파게티 코드를 만들기 때문에 매우 나쁜 형태로 간주됩니다.

당신이해야 할 일은 ArrayCollection을 List (MenuController의 속성이 될 수 있음)에 표시하려는 내용으로 작성하여 데이터 기반 접근 방식을 사용하는 것입니다. 그런 다음 필요에 따라 사용자 정의 항목 렌더러를 추가하십시오. 종류의 같은 :

<s:List dataProvider="{menuController.yourListData}" itemRenderer="YourCustomItemRenderer" /> 

아이템 렌더러 내에서, 당신은 당신이 yourListData의 데이터에 따라 원하는대로 표시 할 수 있습니다. how item renderer works을 읽고 데이터 기반 Flex 어플리케이션의 예를 찾으십시오.

관련 문제