1

コンテナ内に 2 つのコンポーネントが絶対的に配置されています (役立つ場合は、ILOG Elixir マップ上の MapSymbol です)。各コンポーネントは、Image と Label を持つ VBox です。画像には Click イベントに関連付けられた機能があります。ラベルはしません。

問題は、ラベルが mouseOver イベントと mouseDown イベントを食べるように、2 つのアイテムが配置され、一方のラベルが別のアイコンの上にある場合です。バブリングは、ラベルから vbox、コンテナへとバブリングし、下位の要素には決して当たらないため、役に立ちません。vbox を mouseChildren="false" に設定することはできません。これは、画像がクリックされないようにするためです。

これで何かできることはありますか?コンポーネントの配置と数はデータ駆動型であり、私が制御できるものではありません。

編集:いくつかの説明。各コンポーネントは次のように構成されています。

<VBox>
    <Image source="whatever" click="handleClick()"/>
    <Label text="{item.label}/>
</VBox>

問題は、これらの vbox が 2 つ近くに配置されている場合です。一方のボックスのラベルが他方のボックスの画像の上にあり、下のボックスとのやり取りが妨げられる場合があります。

代替テキスト
(ソース: imnotpete.com )

この例では、2 番目のラベルが下のアイコンをブロックしています。マウス イベントは、そのアイコンの下半分を操作したときにのみ渡されます。

VBox を に設定しmouseEnabled="false"、Label を に設定mouseEnabled="false" mouseChildren="false"しても、効果がないように見えます。ラベルは、下の画像がマウス イベントを受信するのをまだブロックしています。

4

2 に答える 2

1

z-index はディスプレイ ツリーによって決定され、より高いインデックスの子 DisplayObject が兄弟の上に表示されるため、これが既に機能している方法です。

あなたがしなければならないことは、子としてボタンの中にラベルを入れることですが、ハックで実行したいだけなら、次のことが必要です:

label.mouseEnabled=false;
label.mouseChildren=false;
于 2010-02-25T03:57:44.507 に答える
0

label.mouseEnabled = false;ラベルの後ろの領域をクリック可能にしますが、それはあなたが必要とするものではありませんか?

于 2010-02-25T00:52:42.320 に答える