C / C ++ Cocos2dx对象在调用schedule后返回null

时间:2016-03-05 09:18:31

标签: c++ cocos2d-x

我是Cocos开发的新手 现在,我在调用时间表时遇到了问题 我有2个场景(Scene1和Scene2)和Object1。 Scene1是main,有一个菜单可以更改为Scene2。 在createScenes2()函数中,我修改了Object1的值,如下所示

Chap5.h
Scene *scene1,*scene2;
int ount;

Chap5.cpp

scene1 = Scene::create();
scene1->retain();
scene2 = createScene2();
scene2->retain();
auto nodeItems = Node::create();
nodeItems->setName("nodeItems");

auto menuNode = Node::create();
menuNode->setName("menuNode");
int index = 2;

auto thisSceneLabel = Label::createWithTTF("This Is A Scene 1",
        "Marker Felt.ttf", 64);

auto menuItem1 = MenuItemFont::create("Make A New Scene");
menuItem1->setFontNameObj("Marker Felt.ttf");
menuItem1->setFontSizeObj(64);  menuItem1->setName("menuItem1");

menuItem1->setCallback([&](cocos2d::Ref *sender) {

    Director::getInstance()->replaceScene(scene2);

    });

auto menu = Menu::create(menuItem1, NULL);
menu->setName("menu");
menuNode->addChild(menu, 1);
menu->setPosition(Vec2::ZERO);

scene1->addChild(menuNode, 2);
scene1->setTag(1);


this->addChild(scene1);

return true;

在createScenes2()中,我修改了Count值

Scene* Chap5::createScene2() {
 count=999999;
scene2->schedule(schedule_selector(Chap5::updateCount), 0.5); // call      schedule to updates

} 但在方法更新中,计数未更新

void Chap5::initSprite(float dt) {
CCLOG("count = %d", count);}

我的问题是在事务到Scenes2和调用schedule方法后计数没有获得值 Anyboby可以让我知道为什么 非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

您可能获得空返回的原因是因为在您的createScene2中,变量scene2未实例化且您的方法未将Scene *作为返回类型返回:

Scene* Chap5::createScene2()
 { 
    count=999999;
    scene2->schedule(schedule_selector(Chap5::updateCount), 0.5); // call schedule to updates
 }

您可能想要做的事情应该是这样的:

Scene* Chap5::createScene2()
{ 
    Scene* scene2 = Scene::create ();
    count=999999;
    scene2->schedule(schedule_selector(Chap5::updateCount), 0.5); // call schedule to updates
    return scene2;
}

我建议将每个场景保存在自己的.h和.cpp文件中,以便于阅读并遵循常规约定

作为初学者学习的好方法是通过以下示例: https://m.youtube.com/playlist?list=PLRtjMdoYXLf4od_bOKN3WjAPr7snPXzoe