2010-12-27 7 views
1

私は状態を作成するために外部データを読んでいるので、私はmx.states.Stateオブジェクトをオンザフライで作成する必要があるアプリケーションを持っています。それぞれStateだけので、ここで私はこれを達成するために使用していた私のコードだ、単一の子供を持っている:私は実際に状態を変更したとき状態のFlex 4 AddChildアクションを動的に作成するにはどうすればよいですか?

var state:State = new State(); 
state.name = "a"; 
state.overrides = [new AddChild(parent, DisplayObject(view))]; 
this.states.push(state); 

しかし、私はあなたができないという事実に関連するランタイムエラーを取得しますspark.components.GroupコンポーネントのaddChildに電話してください。状態の変更中にGroupに要素を追加するための同等のAddElementアクションはありますか?

答えて

1

解決方法は簡単でしたが、大きな問題が残っています。なぜ、Flex SDKにはデフォルトでこのようなクラスが含まれていませんか?そして、Flex 4は以下のようなクラスを使用せずにどのようにこれを実現しますか?

いずれにしても、ここにクラスがあります。

package mx.states { 
    import mx.core.IVisualElementContainer; 
    import mx.core.IVisualElement; 
    import mx.core.UIComponent; 
    import mx.states.IOverride; 
    import mx.utils.OnDemandEventDispatcher; 

    /** 
    * @author rfkrocktk 
    */ 
    public class AddElement extends OnDemandEventDispatcher implements IOverride { 

     private var _target:IVisualElement; 

     private var _relativeTo:IVisualElementContainer; 

     public function AddElement(relativeTo:IVisualElementContainer = null, 
       target:IVisualElement = null) { 
      this.relativeTo = relativeTo; 
      this.target = target; 
     } 

     public function initialize() : void { 

     } 

     public function apply(parent : UIComponent) : void { 
      this.relativeTo.addElement(this.target); 
     } 

     public function remove(parent : UIComponent) : void { 
      this.relativeTo.removeElement(this.target); 
     } 

     [Bindable] 
     public function get target():IVisualElement { 
      return _target; 
     } 

     public function set target(value:IVisualElement):void { 
      _target = value; 
     } 

     [Bindable] 
     public function get relativeTo() : IVisualElementContainer { 
      return _relativeTo; 
     } 

     public function set relativeTo(relativeTo : IVisualElementContainer) : void { 
      _relativeTo = relativeTo; 
     } 
    } 
} 
2

spark要素にAddItemsクラスを使用する必要があります。私は前に同様の質問にanswerを提供しましたが、それは参考になるかもしれません。

関連する問題