zoukankan      html  css  js  c++  java
  • 【cocos2d-x 3.7 飞机大战】 决战南海I (八) 背景移动

            採用双层背景。这样效果更好


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




  • 相关阅读:
    进击的UI------------UIToolBar(bottom导航条)
    进击的UI-------------------UIPageControl(滑动控制)
    进击的UI---------------------UIStepper(加减)
    进击的UI--------------UIActionSheet(提示)
    python生成固定格式且不会重复的用户名
    python多判断if,elif语句优化
    python代码出现异常,自动重新运行
    批处理+adb命令实现Android截图小工具
    python爬取百度图片后自动上传
    map和filter函数
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7110744.html
Copyright © 2011-2022 走看看