C/C++ Cocos2dx 对象在调用调度后返回空值

C/C++ Cocos2dx Object return null after calling schedule

本文关键字:调度 返回 空值 调用 C++ Cocos2dx 对象      更新时间:2023-10-16

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

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

第5章.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;

在创建场景2()中,我修改了计数值

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 和调用计划方法后没有获得值Anyboby可以让我知道为什么非常感谢您的帮助

您可能获得空返回值的原因是,在 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