菜鸟教程小白 发表于 2022-12-13 08:06:40

ios - cocos2d 3.0如何优先处理触摸吞咽


                                            <p><p>自从 cocos2d 3.0 以来 CCTargetedTouchDelegate 已被删除,我想知道如何处理触摸吞咽的东西? </p>

<p>我在 Canvas 节点(2.x 中的图层)顶部有一个小 Sprite ,需要将 Sprite 的优先级设置为高于 Canvas 。当用户在 Sprite 边界框内触摸时,触摸被吞没,否则 Canvas 将响应它。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在 cocos2d 3.0 中,触摸以相反的 z 顺序处理。这意味着如果您的 Sprite 在 Canvas 节点上呈现,它应该已经首先收到触摸通知,并且有机会吞下它。</p>

<p>但是,要接收和吞下 Sprite 的触摸,您应该遵循以下步骤:</p>

<ol>
<li>为你的 Sprite 创建一个单独的类并继承它
<code>CCSprite</code>。 </li>
<li>在 <code>init</code> 方法中将 <code>self.userInteractionEnabled</code> 设置为 <code>YES</code>
如果这个类。 </li>
<li>添加 <strong>empty</strong> <code>touchBegan:</code> 方法。</li>
</ol>

<p>这会吞掉触摸,因为没有在 <code>touchBegan:</code> 方法中调用 <code></code> ,你不会将它传递给底层节点.</p>

<p><code>CCSprite</code>(一直到<code>CCNode</code>)的默认实现调用<code></code>,这个这就是为什么您需要创建一个子类并覆盖此行为的原因。 </p>

<p>如果您确实需要在某些情况下将触摸传递给底层节点,您可以编写如下内容:</p>

<pre><code>-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    if (_passToUnderlyingNode == YES)
    {
      //passed to canvas node
      ;   
    }
    else
    {
      //swallowed
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - cocos2d 3.0如何优先处理触摸吞咽,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24229958/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24229958/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - cocos2d 3.0如何优先处理触摸吞咽