头文件定义
class LevelInterface :public cocos2d::Layer
{
public:
//默认调度器
void update(float dt);
//初始化方法
virtual bool init();
//创建create方法
CREATE_FUNC(LevelInterface);
//地图滚轴方法
//将发放放置到调度器中参数分别为,调度器的刷新时间,速度,作为背景的图片1,作为背景的图片2
void movemap(float dt,float speed,cocos2d::Sprite*backgroud1,cocos2d::Sprite*backgroud2);
private:
cocos2d::Sprite* m_spbackgroud1;
cocos2d::Sprite* m_spbackgroud2;
cocos2d::Sprite* m_spbackgroud3;
cocos2d::Sprite* m_spbackgroud4;
};
实现
bool LevelInterface::init()
{
//判断父类初始化是否成功
if (!Layer::init())
return false;
Size size = Director::getInstance()->getWinSize();
//第一张背景
m_spbackgroud1= Sprite::create("background/smcjyj.jpg");
//将第一张背景设置到屏幕中心处
m_spbackgroud1->setPosition(size.width/2,size.height/2);
//第二图层
m_spbackgroud2 = Sprite::create("background/smcjyj.jpg");
m_spbackgroud2->setPosition(size.width / 2, size.height / 2);
//第二张背景
m_spbackgroud3 = Sprite::create("background/smcjyj.jpg");
//将第二张背景设置到第一张背景后
m_spbackgroud3->setPosition(size.width / 2 + m_spbackgroud1->getContentSize().width, size.height / 2);
//第二图层
m_spbackgroud4 = Sprite::create("background/smcjyj.jpg");
m_spbackgroud4->setPosition(size.width / 2 + m_spbackgroud1->getContentSize().width, size.height / 2);
this->addChild(m_spbackgroud1);
this->addChild(m_spbackgroud2);
this->addChild(m_spbackgroud3);
this->addChild(m_spbackgroud4);
Rocker*a = Rocker::create(Vec2(200, 300), "JoyStick_Bg.png", "JoyStick.png");
this->addChild(a);
this->scheduleUpdate();
return true;
}
void LevelInterface::update(float dt)
{
movemap(dt, 15, m_spbackgroud1, m_spbackgroud3);
movemap(dt, 15, m_spbackgroud2, m_spbackgroud4);
}
//刷新率,图片移动速度,当作背景两张图相同
void LevelInterface::movemap(float dt, float speed, Sprite* backgroud1, Sprite* backgroud2)
{
//地图滚动速度
static float s = dt*speed;
static Size size = Director::getInstance()->getWinSize();
//向左滚动
backgroud1->setPositionX(backgroud1->getPositionX() - s);
backgroud2->setPositionX(backgroud2->getPositionX() - s);
//当图片消失时接上
if (backgroud1->getPositionX() <= -size.width/2)
{
backgroud1->setPositionX(backgroud2->getPositionX() + size.width);
}
//当图片消失时接上
if (backgroud2->getPositionX() <= -size.width / 2)
{
backgroud2->setPositionX(backgroud1->getPositionX() + size.width);
}
}