【问题标题】:2 stacked multiple touch enabled CCLayers2 个堆叠的多点触控 CCLayers
【发布时间】:2013-03-31 13:00:01
【问题描述】:

我有两个 cclayer。顶级 cclayer 有几个对象(从 ccnode 派生)并且启用了多点触控。我使用 cctouchesbegan 来检测对这些对象的触摸。一切正常。

但在顶部 cclayer 下方,我想要另一个启用多点触控的 cclayer。因此,每当没有在顶部 cclayer 上触摸对象时,我希望底部 cclayer 对触摸做出反应。底部的 cclayer 基本上只是一个纯色背景,我希望它在被触摸时做出反应。现在两个 cclayer 同时对触摸做出反应。

我知道单点触控很容易通过 touchdispatcher 和设置优先级来解决。但我被卡住了,因为两个 cclayer 都启用多点触控很重要。

有什么解决办法吗?

【问题讨论】:

  • 多点触控是顶层的“必须”吗?即,您希望能够同时检测和跟踪顶层包含的多个对象的触摸?

标签: ios objective-c cocos2d-iphone multi-touch


【解决方案1】:

多点触控:仅在顶层启用触控输入。如果顶层确定触摸不是在该层的一个精灵上开始的,它将简单地在底层调用相同的 ccTouchesBegan 方法。对于该特定触摸的所有后续事件(移动、结束)都相同。

单次触摸:当层处理触摸并且其他层不应该也处理该触摸时,从 ccTouchBegan 返回 YES。

【讨论】:

  • ccTouchesBegan 是一个 (void) 返回方法。这是我认为问题的症结所在,我找不到任何方法来“声称”任何一种接触。如果顶层是目标层(而不是标准层),那么您的建议适用。
  • @YvesLeBorg 为 (Bool) ccTouchBegan 使用 touchDispatcher
  • @LearnCocos2D 我不确定我是否理解。因为如果底层没有开启触摸输入,就不会调用cctouchesbegan。如果在第二层启用了触摸输入,那么当我触摸顶层上的一个对象时,也会始终调用 cctouchesbegan。您能否稍微澄清一下您的答案?
  • 这个想法是你自己从顶层调用底层的 cctouchesbegan 等,只要顶层确定底层应该处理触摸
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多