zoukankan      html  css  js  c++  java
  • cocos2d 触摸响应失效

    今天碰到了一个奇怪的bug,记录下。

    // 头文件
    @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没有警告。

    教训:一些自己写时不太容易犯的错误,如果存在复制的代码中,则不太容易检查出来,因为自己去看代码的时候是顺着代码的意思去看的,也没有去找错误的倾向。

  • 相关阅读:
    thunkify 模块
    koa框架异步返回值的操作(co,koa-compose)
    ES6 基础版迭代器
    静态类在线程中的共享问题
    AWS远程登录
    系统状体检测命令
    常用系统命令
    文本文件查看命令
    vim
    查看md5
  • 原文地址:https://www.cnblogs.com/pure/p/2535237.html
Copyright © 2011-2022 走看看