addTargetedDelegate:self中的swallowsTouches

swallowsTouches属性解析
本文详细解释了在特定场景下如何使用swallowsTouches属性来控制触摸事件的接收范围,包括YES和NO两种情况下的具体行为。
关于swallowsTouches

[[CC sharedDispatcher] addTargetedDelegate:self priority:kCCMenuTouchPriority swallowsTouches:YES];   

如果 swallowsTouches:YES && touch begin return  yes 

        那么他的move 和end就接受,,别的类就不再接受了。

 如果swallowsTouches:NO &&begin return  yes

        那么他的move 和end就接受,别的类就仍然可以接受。

在 Cocos 引擎中将角色道具获取方式修改为点击触发,可以通过监听触摸事件并检测是否点击到道具对象来实现。以下是一个实现思路及示例代码: 首先,在初始化场景时需要启用触摸事件支持,并注册触摸分发器以处理触摸交互[^2]。 ```objective-c - (id)init { if ((self = [super init])) { self.isTouchEnabled = YES; [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; } return self; } ``` 接下来,实现 `ccTouchBegan` 方法以检测点击事件的起点。在此方法中,可以获取点击位置,并与道具精灵进行碰撞检测: ```objective-c - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event { CGPoint touchLocation = [touch locationInView:[touch view]]; touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation]; // 假设道具精灵为 itemSprite if (CGRectContainsPoint(itemSprite.boundingBox, touchLocation)) { [self pickupItem:itemSprite]; // 调用拾取道具的方法 return YES; } return NO; } ``` 然后,定义 `pickupItem:` 方法用于处理道具拾取逻辑,例如从场景中移除道具、更新角色属性等: ```objective-c - (void)pickupItem:(CCSprite *)item { [item removeFromParentAndCleanup:YES]; // 移除道具精灵 // 在此添加道具效果应用逻辑 } ``` 如果使用的是 Cocos2d-x 或其他版本,也可以通过类似的机制实现点击触发,即通过 `EventListenerTouchOneByOne` 来监听点击事件,并执行相应的道具拾取逻辑。 此外,若使用的是 Cocos Creator 或 JavaScript 环境,可以使用以下代码绑定点击事件: ```javascript cc.Class({ extends: cc.Component, onLoad() { this.node.on('touchstart', this.onItemClick, this); }, onItemClick(event) { // 处理点击逻辑 cc.log('Item clicked'); this.pickupItem(); }, pickupItem() { // 拾取逻辑 this.node.destroy(); // 销毁当前节点 } }); ``` 以上方法均可实现点击触发的道具拾取机制,具体实现可根据项目需求进行调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值