0

mx.core.UIComponentを拡張するクラスを作成しています。このクラスのコンストラクターに、Button(spark.components.Button)を追加したいと思います。ただし、新しいButtonオブジェクト(var b:Button = new Button();など)を作成してからthis.addChild(b)を実行しても、ボタンは表示されません。Buttonオブジェクトを子として追加できない理由はありますか?

編集:追加するだけで、子を印刷すると、Buttonオブジェクトは子であると表示されますが、Buttonは表示されません。

4

3 に答える 3

2

コンストラクターではなく、createChildrenメソッドにボタンを追加する必要があります。

protected var button:Button;

override protected function createChildren():void {
    super.createChildren();

    button = new Button();

    addChild(button);
}

何をしようとしているかによっては、measureメソッドとupdateDisplayListメソッドを実装する必要がある場合もあります。

于 2013-01-28T23:33:49.363 に答える
1

直接使用UIComponentすると、子のレイアウトが処理されません。子コンポーネントの位置とサイズを手動で設定する必要があります(ドキュメントを参照)。

子レイアウトを処理するためにGroup(または、まだMXコンポーネントを使用している場合は)を使用することを検討してください。Canvasにレンダリングを追加することもできますがupdateDisplayList、必ず呼び出すようにしてくださいsuper.updateDisplayList()

于 2013-01-28T22:18:36.433 に答える
0

あなたはActionScriptコンポーネントとFlexコンポーネントの違いを読む必要があります。Flexコンポーネントを使用する場合は、を使用する必要があります。を使用する必要があります。私の知る限り、この機能を備えたクラスは(少なくとも、私が最もよく知っているSparkフレームワークでは)派生したものだけです。したがって、UIComponentを拡張しても、を追加することはできませんが、UIComponentをFlexコンテナに追加することはできます(通常のSpriteでは追加できないと思います)。container.addElement( element )container.addChild( child )GroupButton

于 2013-01-28T22:17:46.143 に答える