Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用调度功能更新精灵位置_C++_Sprite_Cocos2d X - Fatal编程技术网

C++ 使用调度功能更新精灵位置

C++ 使用调度功能更新精灵位置,c++,sprite,cocos2d-x,C++,Sprite,Cocos2d X,在我的游戏中,我有一个动画精灵。我将box2d添加到游戏中以增加重力。现在我想使用schedule函数更新精灵的位置。我用Objto-C工作,但我希望它是一个多平台游戏,所以现在我在C++中尝试。 在我的init中,我有以下行: this->schedule(cocos2d::SEL_SCHEDULE(View::tick(1.0f))); 方法如下: void View::tick(float dt) { world->Step(dt, 10, 10); for(b2Body *

在我的游戏中,我有一个动画精灵。我将box2d添加到游戏中以增加重力。现在我想使用schedule函数更新精灵的位置。我用Objto-C工作,但我希望它是一个多平台游戏,所以现在我在C++中尝试。 在我的init中,我有以下行:

this->schedule(cocos2d::SEL_SCHEDULE(View::tick(1.0f)));
方法如下:

void View::tick(float dt) {
world->Step(dt, 10, 10);
for(b2Body *b = world->GetBodyList(); b; b=b->GetNext()) {
if(b->GetUserData() != NULL) {
}
}
}
我在init中的行中遇到以下错误:“无法从类型“void”强制转换为成员指针类型“coco2d::sel_schedule”(又名void cococo2d::CCobject::*)(float)

我不知道现在该怎么办。我试着用谷歌搜索,但每个人都使用objective-c或schedule_选择器(显然不再有效)


提前感谢

您可能不应该使用schedule功能来更新单个精灵

在场景类中,重写更新的虚拟方法(…):

另外,重写onEnter()和onexitTransitiondStart()。在第一种情况下,调用scheduleUpdate设置场景,以便在某个时间点自动调用。在第二种情况下,调用UnscheduleUpdate(当场景退出时)停止更新

void IntroScene::onEnter()
{
   CCScene::onEnter();
   scheduleUpdate();
}

void IntroScene::onExitTransitionDidStart()
{
   CCScene::onExitTransitionDidStart();
   unscheduleUpdate();
}
通过这种方式,您可以明确控制在更新周期中只有一个函数被调用时更新的内容

但是,如果您确实想这样做:

按如下方式声明自定义更新程序:

void IntroScene::myUpdate(float dt)
{
   CCLOG("Also called");
}
schedule(schedule_selector(IntroScene::myUpdate), 1.0f);
unschedule(schedule_selector(IntroScene::myUpdate));
安排如下:

void IntroScene::myUpdate(float dt)
{
   CCLOG("Also called");
}
schedule(schedule_selector(IntroScene::myUpdate), 1.0f);
unschedule(schedule_selector(IntroScene::myUpdate));
按如下方式取消计划:

void IntroScene::myUpdate(float dt)
{
   CCLOG("Also called");
}
schedule(schedule_selector(IntroScene::myUpdate), 1.0f);
unschedule(schedule_selector(IntroScene::myUpdate));
**注意**据我所知,您只能“调度”从CCNode派生的对象


这有帮助吗?

在哪个类中定义了调度方法..我按照你的建议尝试了它,效果是:)。但我不只是更新一个精灵。我想更新每个精灵。只有我的角色是动态的身体,所以只有一个移动的精灵。很高兴我能帮上忙。你也可以检查一下: