2009-12-09 4 views
1

분배 자 역할을하는 맞춤 구성 요소를 개발하려고합니다.사용자 정의 mxml 구성 요소에 대한 하위 컨텐츠 설정

<?xml version="1.0" encoding="utf-8"?> 
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Canvas id="left"/> 
    <mx:Canvas id="right"/> 
</mx:HBox> 

이 같은 객체를 할당하려면이 구성 요소를 사용하고 싶습니다 :

<Divider> 
    <left> 
     <mx:label text="Stuff I want to put in the left canvas"/> 
     <mx:label text="etc..."/> 
     <mx:label text="etc..."/> 
    </left> 

    <right> 
     <mx:label text="Stuff I want to put in the right canvas"/> 
     <mx:label text="etc..."/> 
     <mx:label text="etc..."/> 
    </right > 
</Divider> 

불행하게도,이 작동하지 않습니다. 컴파일러 오류가 발생했습니다 : '왼쪽'의 이니셜 라이저 : 대상 유형 mx.containers.Canvas의 여러 초기화 프로그램 값.

무엇이 누락 되었습니까?

답변

2

Adobe 웹 사이트에서 following이라는 솔루션을 찾았습니다.

템플릿 구성 요소로 설명 된 기술을 사용하면 특정 유형의 개체 배열을 지정할 수 있습니다. 다음과 같이 구성 요소를 다시 작성했습니다.

<?xml version="1.0" encoding="utf-8"?> 
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()"> 
    <mx:Script> 
    <![CDATA[ 

     [ArrayElementType("mx.core.UIComponent")] 
     public var right:Array; 

     [ArrayElementType("mx.core.UIComponent")] 
     public var left:Array; 

     protected function init():void 
     { 
      var i:int; 

      for (i = 0; i < left.length; i++) 
       leftCanvas.addChild(left[i]); 

      for (i = 0; i < right.length; i++) 
       rightCanvas.addChild(right[i]);    
     }   

    ]]> 
    </mx:Script> 

    <mx:Canvas id="rightCanvas"/> 
    <mx:Canvas id="leftCanvas"/> 
</mx:HBox> 

이제는 의도 한대로 작동합니다.

관련 문제