我是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可以让我知道为什么 非常感谢你的帮助
答案 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