2010-12-29 11 views
0

私は、Flash Builder 4とActionscript 3(実際には、非常に単純化されたものを超えたプログラミング全体)に慣れています。私はたくさんのチュートリアルを見たり読んだりしてプロジェクトを始めましたが、今は壁に衝突したようです。答えはシンプルである可能性が高いですが、私のことを暗示しているようです。動的に作成されたコンテナを制御する

動的に作成したBorderContainerなどの視覚的要素を制御するにはどうすればよいですか(どのようなアプローチが必要ですか)。

私は、BorderContainerとDataGridを含むアプリケーションを持っています。実行時に、X & Y座標と高さと幅の値を含むXMLデータに基づいて3つの新しいBorderContainer(ドラッグ可能でサイズ変更可能)が作成され、既存のBorderContainerに追加されます。これらの子BorderContainersのプロパティを表示し、DataGridに最新の状態(移動/サイズ変更など)にする方法はありますか?

私の将来の意図は、これらの項目の概要を別の領域に表示するカスタムコンポーネントを持つことです(Photoshopの「レイヤー」コントロールと思うが、はるかに単純化します)。最初に行く。

すべての入力、ドキュメント、サンプルなどがすべて評価されます。繰り返しますが、私は信じられないほど簡単な解決策であるかもしれないことをお詫びします。もし私の言語のいずれかが不明であれば、私はこの新しいことに慣れています。

答えて

1

私はBorderContainerのArrayCollectionをさまざまなプロパティセットとともに作成します(親BorderContainerでaddElementも呼び出すことを確認してください)。ArrayCollectionがBindableとして宣言されていることを確認し、DataGridのdataProviderとして設定します。次に、表示するプロパティ(高さ、幅など)に基づいて、DataGridの列を指定します。 BorderContainersのプロパティが変更されるたびに、DataGridが自動的に更新されます。

+0

ありがとうウェイド。私が指摘したように、DataGridに多くのバグが導入されましたが、どのように進めたいかという混乱が加えられましたが、問題を解決して作業を進めました。学習体験を続けましょう!ありがとう! – Rejected

0

純粋なAS3プロジェクトを想定すると、最良の方法はオブジェクトの辞書を構築することです。

コンポーネントの識別子を作成したか、実行時に簡単に作成できるとします。

var containers:Dictionary = new Dictionary(); 

private function _init():void 
{ 
    //some loop to create objects 
    containers[newObject.name] = newObject; 
} 

後で、コンテナ辞書からハッシュされたインデックスを取得するだけですぐにアクセスできます。

さて、Flexプロジェクトを想定し、我々はさらにいくつかのアプローチを持って、私たちは取ることができます:

  • のDisplayObjectContainerはgetChildByName()を実装し
  • グループがgetElementAtを実装し、numElementsは、反復処理の名前をチェックして、リターンします期待値。

個人的に、私はまだ辞書のアプローチを好む...最新のものを維持するためとして

、あなたは(通常のFlex専用液)バインディングに見ることができますまたはより適切なイベントが派遣調査します:

  • Event.RESIZE
  • Event.MOVE

ハンドラーでは、UIを更新するだけです!

HTH、それ以外の場合はさらに情報を投稿し、われわれが把握できるものを見ていきます。

+0

私は既に対処してきた別のArrayCollectionの単純な実装だったので、Wade Muellerの解決策をこの問題に付しました。しかし、私は将来、それを使いこなすつもりで、辞書を紹介してくれてありがとうと思いました。ありがとう! – Rejected

関連する問題