2011-12-06 95 views
0

我正在嘗試製作一個vieport,您可以通過拖動背景圖像進行平移。防止觸發事件從另一個精靈下觸發

這裏是我做了什麼:http://students.info.uaic.ro/~tudor.berechet/0sandbox/aperture/science/testing/fatChance.html

請注意,我已經隱藏鼠標光標和2個自定義的取代了它。

問題是,附加到背景的事件是一個觸摸事件,即使鼠標位於該背景前面的sprite/movieclip(猴子或屬性)上時也會觸發事件。並且統計數據甚至不在遊戲圖層中(猴子和bg以及鼠標光標所在的位置)。嘗試拖動統計數據,並看到背景和其他一切東西(這是不需要的)。此外,我需要刪除自定義光標,並在鼠標不在背景上時顯示常規光標(即,當它位於猴子或統計信息上或將來可能有/將有的任何新的精靈)。

現在我在一段時間內還沒有使用flash,而且我並不是專家,但是這種事件發生的正常行爲無論發送者是否被其他東西埋沒?

我該如何去改變這種行爲?

PS:我已將源代碼附加到上面鏈接中的.swf。此外,如果這與任何事情有關,我使用Starling作爲我的GameLayer。

[編輯2] 看來我還沒有弄清楚自己。我只希望舞臺可以拖動IFF鼠標直接在背景上。每當鼠標和背景之間存在精靈時,背景事件都不應該激發,因此我可以更改光標並與所述精靈進行交互。

+0

我找不到源代碼? –

+0

@Lars右鍵單擊>查看源代碼,或轉到此處:http://students.info.uaic.ro/~tudor.berechet/0sandbox/aperture/science/testing/srcview/index.html – Spectraljump

+1

由於您提到是新手閃光燈,你有沒有嘗試玩你的movieclips/sprites的mouseChildren和mouseEnabled屬性? – Frank

回答

2

如果你想讓事件不通過猴子,你可以使用stopPropagation()。因此,向猴子添加(或更新)一個事件監聽器,並對其進行編輯,以使e.stopPropagation()成爲事件處理程序的第一行。

private function _touchHandler(e:TouchEvent):void 
{ 
    e.stopPropagation(); 
    // any other code for touching your monkey :P ... 
} 

對於任何其他想要停下來的事件,都要做同樣的事情。

+0

謝謝KreeK提及'stopPropagation()'。我很愚蠢,甚至沒有想到「傳播」這個詞! :)它對猴子來說工作得很好。但它對於'stats'來說很奇怪。手(假)遊標仍然在'stats'下移動,鼠標指針不顯示。但是,如果拖動'stats',它拖動時不拖動背景(並且手保持在後面)。但是一旦你拖動背景,再次拖拽'stats'會恢復拖拽本身和背景的錯誤方式。我更新了我的鏈接和來源。 'Stats'在'StarlingIntro.as'中。 – Spectraljump

相關問題