2009-03-13 8 views
0

を「フレックス」Canvasに追加したいと思います。 これをやってI'am:フレックス3キャンバス、スクロールバー

var uic:UIComponent=new UIComponent; 
var s:Sprite=new Sprite(); //<-- my simple Sprite 
uic.addChild(s); 

myCanvas.addChild(uic); 

Spriteが正しくCanvasに追加されますが、今、私はSpriteサイズに応じてCanvasスクロールバーを有効にする必要があります。 (キャンバスが固定サイズを持っている)

任意のアイデアウェルカムは、あなたが発見した

おかげ

答えて

4

問題は、それが単に(無地のUIComponentがその親に幅または高さの値を報告しないということですその価値がどうあるべきかを知らない!)。

Flexで単純なスプライトやその他のプリミティブ表示オブジェクトを操作する必要がある場合は、measure()関数のオーバーライドを使用してUIComponentのサブクラスを作成することをお勧めします。そこで、measuredWidthプロパティとmeasuredHeightプロパティをUIComponentの子のサイズに設定します。

これは、あなたが(プレーンUIComponentを置き換えますあなたのUIComponentのサブクラスに)しようとする場合があります迅速(未検証)ソリューションです。個人的に

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

    for(var i:int = 0; i < this.numChildren; i++) 
    { 
     var child:DisplayObject = this.getChildAt(i); 
     this.measuredWidth = Math.max(this.measuredWidth, child.x + child.width); 
     this.measuredHeight = Math.max(this.measuredHeight, child.y + child.height); 
    } 
} 

、可能な限り、私はすべてのコンテンツを適切にしようこのようなハッキングを作成するのではなく、UIComponentのサブクラスを使用して、Spriteやその他の非UIComponentタイプをFlexのコンテナ内で動作させることができます。しかし、あなたのアプローチは非常に一般的であるようですので、これはあなたと他の人に便利です。

+0

ありがとう、それはまさに私が必要なものです:) – OXMO456

関連する問題