2012-08-28 4 views
0

속성/구성 요소 매개 변수 창에서 개체 참조를 구성 요소로 직접 전달할 수 있습니까? [Inspectible] 태그를 사용하면 실제 객체 참조가 아닌 문자열 만 입력 할 수 있습니다.속성 창에서 구성 요소에 개체 참조 추가

예를 들어, 열리는 무대의 문을 참조해야하는 "손잡이"라는 사용자 지정 구성 요소가 있습니다. 나는 이것을 "knob.door = someDoor;"코드로 쉽게 할 수 있다는 것을 알고있다. 하지만 장면에 많은 객체가 있기 때문에 시각적으로 물성 창을 할 수 있다면 더 선호 할 것입니다.

답변

0

나는 이것을 할 수 있다고 생각하지 않습니다. 가장 좋은 방법은 문자열 식별자 (클립이 깊이 중첩 된 경우 전체 점 분리 경로)를 전달한 다음 사용자 지정 구성 요소 내에 코드를 구현하여 해당 항목을 이름으로 찾는 것입니다.

나는 수평 및 수직 이전 구성 요소에 상대적으로 자신을 낳는 사용자 지정 구성 요소를 가지고, 그래서 나는이 작업을 수행 :

모든 구성 요소가 동일한 부모를 공유하기 때문에 쉽게 만들어
protected var horizontalPredecessor:String = ""; 

[Inspectable(name = "HorizontalPredecessor", type = String, defaultValue="")] 
public function set HorizontalPredecessor($value:String):void 
{ 
    horizontalPredecessor = $value; 
    drawNow(); 
} 

override protected function draw():void 
{ 
    if (parent) 
    { 
     if (horizontalPredecessor != "") 
     { 
      var hp:DisplayObject = parent.getChildByName(horizontalPredecessor); 
      if (hp) 
      { 
       x = hp.y + hp.height + horizontalSpacing; 
      } 
     } 
    } 
} 

... . 단 하나의 문이 있는지 또는

는, 당신은 싱글 있도록하고,이 같은 정적 참조를 줄 수 :

public class Door 
{ 
    private static var _singleton:Door; 

    public static function get Singleton():Door 
    { 
     if(!_door) _door = new Door(); 
     return _door; 
    } 

} 

이 그런 다음 핸들 그냥 Door.Singleton을 참조 할 수 있습니다 그리고 당신은이 없습니다 또는 Door 클래스에 Doors 정적 배열을 가질 수 있으며 핸들에 특정 Door에 연결하는 인덱스 번호를 지정할 수 있습니다.

+0

감사합니다. _getChildByName_ 메소드를 완전히 잊었습니다. 이 방법으로 인스턴스 이름 만 삽입 할 수 있으며 모두 고유해야하므로 문제가 발생하지 않아야합니다. –

관련 문제