根据游戏的开发需要,大家一定少不了背景滚动这一条件,如今,就来告诉大家,如何来真正实现背景的滚动。
/*添加一个游戏背景 并设置图片的坐标*/
auto spbk = Sprite::create("background.png");
//实现图片的左下角对齐屏幕的左下角
spbk->setPosition(Vec2(0, 0));
spbk->setAnchorPoint(Point::ZERO); //设置锚点
this->addChild(spbk);
/*添加第二个游戏背景 并设置图片的坐标*/
auto spbk_1 = Sprite::create("background.png");
//实现图片的y坐标始终等于第一个图片的y坐标
spbk_1->setAnchorPoint(Point::ZERO); //设置锚点
spbk_1->setPosition(Vec2(0, 0));
spbk_1->setPositionX(spbk->getPositionY() + 1280);
this->addChild(spbk_1);
//设置唯一的ID
spbk->setTag(10);
spbk_1->setTag(11);
//利用计划任务实现背景图片的滚动
this->schedule(schedule_selector(GameScene::moveBackground),0.05); //每隔5毫秒调用一次moveBackground方法
/*实现背景的一个滚动*/
void GameScene::moveBackground(float t)
{
//根据Tag 或许相应的元件
auto spbk = this->getChildByTag(10);
auto spbk_1 = this->getChildByTag(11);
spbk->setPositionY(spbk->getPositionY() - 20); //20为移动的像素
if (spbk->getPositionY() < -1280)
{
spbk->setPositionY(0);
spbk_1->setPositionY(spbk->getPositionY()+1280); //始终让第二张图片与第一张图片相互衔接
}
}