我創建了一個使用Starling層(遊戲本身)和包含多個Popups和Stuff的經典顯示列表的遊戲。停止MouseEvent - 將displayList視圖傳播到starling視圖
我有一件事困擾着我: 如果在displayList-elements上生成MouseEvent,它們總是會通過Starling層併產生TouchEvents等,這非常煩人。
我想知道有一些一般(和易於使用)的方法來處理。
的一個可能性是偵聽所有顯示列表式元件以下活動:
interfaceElement.addEventListener(MouseEvent.MOUSE_MOVE, stopPropagationHandler);
interfaceElement.addEventListener(MouseEvent.MOUSE_DOWN, stopPropagationHandler);
interfaceElement.addEventListener(MouseEvent.MOUSE_UP, stopPropagationHandler);
private function stopPropagationHandler(e:MouseEvent):void {
e.stopPropagation();
}
但是,這看起來很討厭我。 即使我這樣做,我還有一個問題: 如果椋鳥元素低於該display-list-element,並且它具有用於翻轉行爲的TouchEvent.TOUCH >>翻轉外觀不會如果您將鼠標懸停在display-list-element上,則將其從Starling中移除。
我也想過在每個顯示列表元素後面放置一個虛擬椋鳥元素......以阻止這些事件......但是對於這樣一個「簡單」任務而言,這聽起來有點「過於複雜」。 或者我錯過了什麼?
提示將不勝感激。 謝謝。
我想說利用全球可用的標誌,而不是事件傳播塊,如果一個模式彈出在比賽將要設置,所以Starling級別的每個事件處理程序將首先檢查它是否已設置,如果已設置則返回,以便Starling部分的SWF將表現爲在彈出窗口中沒有任何事情發生。 – Vesper
@Vesper謝謝..但正如你已經提到過,這隻適用於模態。 :/ 我另外有例如可以始終可見的聊天。 – Roman