2012-01-18 5 views
0

私が解決しようとしている基本的な問題は、Flex &のFlashコンポーネントが混在しており、コンポーネントに進行スピナーを追加するためのものです。したがって、コンポーネントがContainerの場合は、rawChildrenに追加します。それ以外の場合は通常通り追加します。Flex 3:コンテナの「rawChildren」にスプライトを追加すると、代わりにcontent childrenに追加されることがあります

しかし、私はVBoxから継承するコンポーネントに問題があります。私は

cont.rawChildren.addChildAt(spinner, cont.rawChildren.numChildren); 

を呼び出すしかし、私は子供をトレースするとき、私のスピナーはcont.getChildren()に現れ、そしてcomp.numChildrenは明らかにも1ずつ増加します。他のコンテナは、他のVBoxコントロールであっても正しく動作するようです。

私はFlexフレームワークのコードを歩きましたが、これが継承またはタイミングのいずれかによって発生する理由を説明するための何も見つかりませんでした。

この場合、rawChildrenが予測できない可能性がある理由を説明する人がいますか?

ありがとうございました。


機能:

var bcu:Number = u.numChildren; 
var bce:Number = el.numChildren; 

el.addChildAt(s, ((pos > -1)?pos : el.numChildren)); 
trace("ADD NEW SPINNER", u, el, el.numChildren, u.numChildren, bce, bcu); 

elにするDisplayObjectまたは容器のrawChildrenオブジェクトのいずれかであり、そしてuはスピナーが接続されている元のオブジェクトです。

出力:

ADD NEW SPINNER BlockMovePopup1734 [object ContainerRawChildrenList] 6 5 5 4 

そして:

[Fault] exception, information=TypeError: Error #1034: Type Coercion 
failed: cannot convert com.misc::[email protected] to mx.core.IUIComponent. 

出力elが正しくContainerRawChildrenListに設定(VBoxrawChildrenオブジェクト)とnumChildren[6,5][5,4]前であることであることを示していますコールに。これは、SpriteがrawChildrenではなくコンテンツの子に追加されていることを意味します。

+0

あなたは「内容の子供」の話をしていますか? あなたは「しかし、私はVBoxから継承するコンポーネントで問題に遭遇していますが、VBoxから拡張されたクラスで何が起こったのか正確に説明していません。 –

+0

「コンテンツの子」は、rawChildrenに追加されるスキンなどは含まず、コンテナの通常の子です。私の拡張VBoxは本質的に単なるポップアップ/ツールチップタイプのものですが、子どもたちに特別なことは何もしません。最大4つのLinkBut​​tonが含まれています。 – Glenn

答えて

2

これは楽しいことでした。奇妙なことを見つけた私はおそらくrawChildren.addChildAt機能は少しばかだと思う。 Containerクラスのテキストのこのブロックが見つかりました:

Container assumes that content children are contiguous, and that 
    non-content children come before or after the content children. 
    In order words, Container partitions DisplayObjectContainer's 
    index range into three parts: 

    A B C D E F G H I 
    0 1 2 3 4 5 6 7 8 <- index for all children 
      0 1 2 3  <- index for content children 

    The content partition contains the content children D E F G. 
    The pre-content partition contains the non-content children 
    A B C that always stay before the content children. 
    The post-content partition contains the non-content children 
    H I that always stay after the content children. 

私はrawChildren.addChildを使用した場合、それは今のところ正常に動作します。どちらの場合も、スピナーは最後の子として追加されていましたが、addChildは正しく行います。

+0

うわー、知っておいてよかった。これはプラットフォームが不安定ですが...最近、HTML5のためにFlexが枯渇しているのは不思議ではありません。 –

関連する問題