• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 08:06:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

我在 Canvas 节点(2.x 中的图层)顶部有一个小 Sprite ,需要将 Sprite 的优先级设置为高于 Canvas 。当用户在 Sprite 边界框内触摸时,触摸被吞没,否则 Canvas 将响应它。



Best Answer-推荐答案


在 cocos2d 3.0 中,触摸以相反的 z 顺序处理。这意味着如果您的 Sprite 在 Canvas 节点上呈现,它应该已经首先收到触摸通知,并且有机会吞下它。

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

  1. 为你的 Sprite 创建一个单独的类并继承它 CCSprite
  2. init 方法中将 self.userInteractionEnabled 设置为 YES 如果这个类。
  3. 添加 empty touchBegan: 方法。

这会吞掉触摸,因为没有在 touchBegan: 方法中调用 [super touchBegan:...] ,你不会将它传递给底层节点.

CCSprite(一直到CCNode)的默认实现调用[super touchBegan:...],这个这就是为什么您需要创建一个子类并覆盖此行为的原因。

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

-(void)touchBeganUITouch *)touch withEventUIEvent *)event
{
    if (_passToUnderlyingNode == YES)
    {
        //passed to canvas node
        [super touchBegan:touch withEvent:event];     
    }
    else
    {
        //swallowed
    }
}

关于ios - cocos2d 3.0如何优先处理触摸吞咽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229958/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap