cocos2d地图滚动的封装

头文件定义

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);

	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值