Search code examples
cocos2d-iphonecocos2d-x

layer->schedule() does not work


void HelloWorld::startMovingBackground() {

    CCLog("startMovingBackground...");

    if ( isLeftPressed && isRightPressed ) {
        return;
    }

    CCLog("schedule...");        // OK.......................

    this->schedule(schedule_selector(HelloWorld::moveBackground));
}

and

void HelloWorld::moveBackground(float f) {

    CCLog("moveBackground %f", f);       // NO....................

    // Do move background...
}

But, moveBackground function is not called. Help me...

==========================================================

Code (Initializing "HelloScene")

CCScene* HelloWorld::scene() {
    CCScene * scene = NULL;
    do {
        scene = CCScene::create();
        CC_BREAK_IF(! scene);
        HelloWorld *layer = HelloWorld::create();
        CC_BREAK_IF(! layer);
        scene->addChild(layer);
    } while (0);
    return scene;
}

bool HelloWorld::init()
{
    bool bRet = false;
    do {
        CC_BREAK_IF(! CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) );

        this->setTouchEnabled(true);

        winSize = CCDirector::sharedDirector()->getWinSize();

        this->setTouchEnabled(true);

        this->createBackgroundParallax();

        this->createArrowButtons();

        bRet = true;
    } while (0);

    return bRet;
} 

Solution

  • If you invoke the onEnter, scheduleUpdate() may be not working.Try the following:

    CCDirector::sharedDirector()->getScheduler()->scheduleUpdateForTarget(this,0,false);
    

    or

    CCDirector::sharedDirector()->getScheduler()->scheduleSelector(schedule_selector(NewGame::update),this,0.1,false);