2010-11-23 30 views
0

我有一個場景,有一個按鈕。點擊按鈕後,矩形精靈從左側滑入:http://img255.imageshack.us/img255/9867/slidei.pngCocos2d:一層位於另一層之上 - 是否可以臨時停用某個圖層/區域的觸摸?

在此形狀下,有幾個觸摸按鈕。當我觸摸矩形形狀時,我不希望這些被調用。所以,只要形狀仍然在屏幕上,那些觸摸不應該回應。相反,在棕色形狀的頂部還有其他幾個按鈕,用於響應觸摸。我該如何管理?

是否可以臨時停用場景中某個圖層的觸摸?矩形形狀是否是CCLayer對象?

我知道我可以創建該形狀具有透明背景的新場景,但我還是希望按鈕反應亮點:

當我點擊該按鈕,形狀幻燈片時,我。再次點擊它,它會滑出屏幕。

回答

0

與任何用戶界面一樣,您必須讓對象知道它們是否已啓用。你最好的選擇是發送一個消息給按鈕,告訴它打開或關閉。

理想情況下,您將使用全局觸摸輸入處理程序,而不是允許每個單獨的按鈕或幻燈片自行對輸入作出反應。這會帶來很多麻煩和額外的工作。相反,將所有應該對輸入作出反應的對象放在同一圖層上,然後使用觸摸輸入處理程序註冊該圖層,然後將所有觸摸事件轉發到該特定圖層,而不是其他圖層。

+0

我實際上使用「rects」並檢查某個點是否在該rect內。我怎麼能禁用CGRect,或一般在cocos2d中的對象?關於你的第二個提到:所以我應該爲我的幻燈片形狀創建一個額外的圖層,其中只有一個幻燈片在屏幕上時可以按下的按鈕?如果我在另一層之上有圖層,它是否會捕捉我的觸摸輸入,以便下面的圖層無法獲得觸摸信息? – KayO 2010-11-23 20:15:18

2

取決於您是否使用touchesBegan方法響應的實際按鈕對象或CGRect區域。我同意GamingHorror最清潔的方法是直接根據需要啓用/禁用按鈕對象。

但是,只要滑動觸摸區域是一個UIView子類,這是一個可行的kludge。

之前,它滑入你可以禁止所有用戶觸摸:

[[[UIApplication的sharedApplication] keyWindow] setUserInteractionEnabled:NO];

在您的視圖滑入之後,您可能需要在該特定視圖上設置UserInteractionEnabled:YES。當它滑出時,你可以把它全部回來

[[[UIApplication sharedApplication] keyWindow] setUserInteractionEnabled:YES];

相關問題