2010-02-24 39 views
1

我有兩個組件完全位於一個容器內(它們是ILOG Elixir地圖上的MapSymbols,如果有幫助的話)。每個組件都是帶有圖像和標籤的VBox。圖像具有綁定到Click事件的功能;標籤不。是否有可能通過z-index而不是層次結構來冒泡MouseEvent?

問題是當兩個項目的位置使得一個標籤位於另一個z-index標籤的上方時,標籤吃掉了所有mouseOver和mouseDown事件。冒泡不起作用,因爲它從標籤到容器的氣泡到達容器,從不碰到下面的元件。我無法將vbox設置爲mouseChildren =「false」,因爲這樣也可以避免圖像被點擊。

我能用這個做什麼嗎?組件的定位和數量是數據驅動的,而不是我控制的東西。

編輯:一些澄清。每個不同的部件的結構是這樣的:

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

問題是,當兩個這樣的縱向方框被放置靠近在一起 - 一個盒的標記物可以是其他的框的圖像的上方,從與所述相互作用阻斷你較低的一個。

alt text http://imnotpete.com/wp-content/uploads/2010/02/example.png

在該示例中第二個標籤塊下方的圖標 - 鼠標事件,只有當你與圖標的下半部交互傳遞。

將VBox設置爲mouseEnabled="false",標籤爲mouseEnabled="false" mouseChildren="false"似乎沒有任何效果 - 標籤仍然會阻止接收鼠標事件的較低圖像。

+1

爲什麼是你的標籤定位*以上*它屬於哪個按鈕?它真的應該在裏面。然後你的問題也消失了。 – poke 2010-02-25 00:55:39

回答

0

label.mouseEnabled = false;會使標籤背後的區域變成可點擊的,是不是你所需要的?

1

z-index由顯示樹決定,顯示樹上方顯示索引較高的子DisplayObjects,因此這是它的工作原理。

什麼,你應該做的是把你的標籤您的按鈕作爲一個孩子,但如果你只是想與黑客運行,你想:

label.mouseEnabled=false; 
label.mouseChildren=false; 
相關問題