2010-11-23 52 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];

相关问题