1. Node对象update函数
cocos2dx 的Node对象提供update函数,游戏运行的每一帧都会调用update函数。程序默认是不会调用Node对象的update函数。
如何开启调用update函数的功能??
在init函数中加入 this->scheduleUpdate();
2. update函数实现地图的无限滚动
如何实现地图的无限滚动,就是不断改变地图的X坐标或Y坐标。
void TollgateScene::update(float delta)
{
int posX1 = bg_sprite1->getPositionX();
int posX2 = bg_sprite2->getPositionX();
int iSpeed = 2;
Size mapSize = bg_sprite1->getContentSize();
posX1 -= iSpeed;
posX2 -= iSpeed;
if(posX1< -mapSize.width/2){
posX2 = mapSize.width/2;
posX1 = mapSize.width +mapSize.width/2;
}
if(posX2< -mapSize.width/2){
posX1 = mapSize.width/2;
posX2 = mapSize.width +mapSize.width/2;
}
bg_sprite1->setPositionX(posX1);
bg_sprite2->setPositionX(posX2);
}
(1)为什么用判断地图移出屏幕坐标?
如果不判断抵触移出屏幕坐标,等地图都移出屏幕后就是黑屏了。
(2)为什么判断小于 mapSize.width/2而不是mapSize.width?
这是由于cocos2dx的锚点,对象默认的锚点是对象的重点,也就是地图的实际坐标是地图的终点坐标。