加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【cocos2d-x 3.7 飞机大战】 决战南海I (八) 背景移动

发布时间:2020-12-14 16:27:32 所属栏目:百科 来源:网络整理
导读:采用双层背景,这样效果更好 .h class BackgroundMove : public Layer{public:BackgroundMove();~BackgroundMove();virtual bool init();virtual void onEnterTransitionDidFinish();//等进入场景之后在进行背景的移动CREATE_FUNC(BackgroundMove);public:vo

采用双层背景,这样效果更好


.h

class BackgroundMove : public Layer
{
public:
	BackgroundMove();
	~BackgroundMove();
	virtual bool init();
	virtual void onEnterTransitionDidFinish();	//等进入场景之后在进行背景的移动
	CREATE_FUNC(BackgroundMove);

public:
	void move(float dt);
private:
	Sprite* m_background1;
	Sprite* m_background2;
	Sprite* m_background3;
	Sprite* m_background4;

	enum 
	{
		OFFSET = 3
	};
};


背景无限滚动的方式有很多,只要不出现黑边即可

.cpp

BackgroundMove::BackgroundMove() : m_background1(NULL),m_background2(NULL),m_background3(NULL),m_background4(NULL)
{

}
BackgroundMove::~BackgroundMove()
{
	CC_SAFE_DELETE(m_background1);
	CC_SAFE_DELETE(m_background2);
	CC_SAFE_DELETE(m_background3);
	CC_SAFE_DELETE(m_background4);
}
bool BackgroundMove::init()
{
	bool bRect = false;

	do 
	{
		if (!Layer::init())
			return false;

		//加载背景图片
		m_background1 = Sprite::createWithSpriteFrameName("backgroundTollgate2.png");
		m_background1->setPosition(Point(0,0));
		m_background1->setAnchorPoint(Vec2(0,0));

		this->addChild(m_background1,1);

		m_background2 = Sprite::createWithSpriteFrameName("backgroundTollgate2.png");
		m_background2->setPosition(Point(0,0));
		m_background2->setAnchorPoint(Vec2(0,0));
		m_background2->setFlipY(true);

		this->addChild(m_background2,1);

		//加载背景图片
		m_background3 = Sprite::createWithSpriteFrameName("backgroundTollgateThree.png");
		m_background3->setPosition(Point(0,0));
		m_background3->setAnchorPoint(Vec2(0,0));

		this->addChild(m_background3,0);

		m_background4 = Sprite::createWithSpriteFrameName("backgroundTollgateThree.png");
		m_background4->setPosition(Point(0,0));
		m_background4->setAnchorPoint(Vec2(0,0));
		m_background4->setFlipY(true);

		this->addChild(m_background4,0);

		CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/BackgroundMusic.mp3",true);

		bRect = true;
	} while (0);

	return bRect;
}
void BackgroundMove::onEnterTransitionDidFinish()
{
	Layer::onEnterTransitionDidFinish();
	this->schedule(SEL_SCHEDULE(&BackgroundMove::move),0.01f);
}

void BackgroundMove::move(float dt)
{
	Vec2 origin = Director::getInstance()->getVisibleOrigin();

	m_background1->setPositionY(m_background1->getPositionY() - OFFSET);
	m_background2->setPositionY(m_background1->getPositionY() + m_background1->getContentSize().height);
	if (m_background2->getPositionY() <= origin.y)
		m_background1->setPositionY(0);

	m_background3->setPositionY(m_background3->getPositionY() + OFFSET);
	m_background4->setPositionY(m_background3->getPositionY() - m_background3->getContentSize().height);
	if (m_background4->getPositionY() >= origin.y)
		m_background3->setPositionY(0);

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读