0

私はアイソメトリックゲームを開発しています。

UIComponent ( WorldMap ) があります。プレイヤーはMapElement (ゲーム アイテム) を選択し、それらをプレイ可能な領域WorldMapにドロップできます。この MapElement は、Sprite、Image、Label、さまざまな情報を保持するカスタム Flex コンポーネントなどの子コントロールを含む UIComponent でもあります。

これで、 idx (インデックス) と呼んでいるアイソメトリック領域で、どちらを後ろに表示し、どれを前に表示するかを決定するロジックを作成し、この値をMapElementの深さプロパティに見ています。

下の写真に示す順序で 3 つのコンポーネントを追加し、それぞれの深さプロパティを 11077、11168、および 10630 に設定しました。深さプロパティが適切に機能した場合、3 番目のアイテムは 1 番目のアイテムの背後にあるはずですが、それらのように見えます追加された順に表示されます (デフォルトの動作)

私が間違っていなければ、深さの値は何でもかまいません

誰かが私を助けることができますか?

swapChildrenswapChildrenAt、およびaddChildAtメソッド (プロジェクト固有の理由で使用したくない) を使用する別のソリューションを認識していますが、深さの何が問題なのかを調べる必要があります。

ここに画像の説明を入力

4

2 に答える 2

2

私が思うに、あなたが言ったように、UIComponent である WorldMap コンポーネントの問題です。depth プロパティをさらに掘り下げると、depthsetter がinvalidateLayeringUIComponent では空であるメソッドを起動Groupし、すべての Flex 4 コンポーネントのメイン コンテナーであるロジックのみでオーバーライドすることがわかります。そしてここに例があります: http://www.tink.ws/blog/flex-4-uicomponent-depth/

したがって、深さプロパティを正しく機能させるには、少なくともGroupまたはを WorldMap として使用する必要があるようです。SkinnableContainer

于 2012-04-23T13:23:30.660 に答える
0

UIComponent.addChildAt(child:DisplayObject, index:int) を使用します。addChildAt は、子 DisplayObject インスタンスをこの DisplayObjectContainer インスタンスに追加します。子は、指定されたインデックス位置に追加されます。0 のインデックスは、この DisplayObjectContainer オブジェクトの表示リストの後ろ (下) を表します。

于 2012-04-23T10:12:58.327 に答える