cocos2d 触摸响应失效
2012-06-04 21:30
211 查看
今天碰到了一个奇怪的bug,记录下。
问题描述:CCLayer默认遵循标准触摸协议,又在init中 执行了[self setIsTouchEnabled:YES];但是始终不能触发触摸响应函数。
分析:经过调试,发现居然是CCLayer中的isRunning_为NO,以前倒是从没碰到过。而isRunning_只有在CCNode的-(void) onEnter;中才会置YES
但奇怪的是onEnter的isRunning_ = YES;没有执行到,而界面显示完全正常。
仔细检查代码发现是其他地方的一个内存错误,但xCode没有警告。
教训:一些自己写时不太容易犯的错误,如果存在复制的代码中,则不太容易检查出来,因为自己去看代码的时候是顺着代码的意思去看的,也没有去找错误的倾向。
// 头文件 @interface A : CCLayer ... @end // 源文件 @implementation A - (id)init{ if(self = [super init]){ ... [self setIsTouchEnabled:YES]; // 不等同于isTouchEnabled_ = YES } } @end
问题描述:CCLayer默认遵循标准触摸协议,又在init中 执行了[self setIsTouchEnabled:YES];但是始终不能触发触摸响应函数。
分析:经过调试,发现居然是CCLayer中的isRunning_为NO,以前倒是从没碰到过。而isRunning_只有在CCNode的-(void) onEnter;中才会置YES
-(void) onEnter { [children_ makeObjectsPerformSelector:@selector(onEnter)]; [self resumeSchedulerAndActions]; isRunning_ = YES; }
但奇怪的是onEnter的isRunning_ = YES;没有执行到,而界面显示完全正常。
仔细检查代码发现是其他地方的一个内存错误,但xCode没有警告。
教训:一些自己写时不太容易犯的错误,如果存在复制的代码中,则不太容易检查出来,因为自己去看代码的时候是顺着代码的意思去看的,也没有去找错误的倾向。
相关文章推荐
- cocos2d ccLayer响应触摸事件方法
- cocos2d-x让精灵响应触摸 并把方向旋转到相对应的角度
- 游戏开发随手记:cocos2d ccLayer响应触摸事件方法
- cocos2d-x js binding tips 1 使用cocosbuilder导入jsb后无法响应触摸的问题
- Cocos2d-x 触摸响应事件CCTouchDelegate
- cocos2dx的触摸方法响应跳转场景的操作导致触摸失效的问题
- [cocos2d-x] 让精灵响应触摸 并把方向旋转到相对应的角度
- cocos2d-x 植物大战僵尸(6) 触摸植物卡的消息响应
- cocos2d-x之触摸的响应
- cocos2d-x场景中的层(CCLayer)及其触摸消息响应
- cocos2d-x总结 场景中的层(CCLayer)及其触摸消息响应
- cocos2d-x总结(三)场景中的层(CCLayer)及其触摸消息响应
- cocos2d ccLayer响应触摸事件方法:CCStandardTouchDelegate 与 CCTargetedTouchDelegate
- cocos2d-x 1场景中的层(CCLayer)及其触摸消息响应
- Cocos2D-x游戏开发之九:屏幕触摸一:基本屏幕操作响应
- cocos2d ccLayer响应触摸事件方法:CCStandardTouchDelegate 与 CCTargetedTouchDelegate
- [cocos2d-x-教程] 让精灵响应触摸 并把方向旋转到相对应的角度
- cocos2d-x场景中的层(CCLayer)及其触摸消息响应(转)
- cocos2d-x学习三触摸抬起响应喷发子弹
- Cocos2d-x ccSprite的触摸消息响应 - ccsx教程