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

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

【cocos2d-x 3.7 飞机大战】 决战南海I (八) 背景移动的更多相关文章

  1. cocos2dx实现经典飞机大战

    游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...

  2. 【一】仿微信飞机大战cocos2d-x3.0rc1

    參考 [偶尔e网事] 的 [cocos2d-x入门实战]微信飞机大战  cocos2dx 2.0版本号,偶尔e网事他写的很具体,面面俱到,大家很有必要看下.能够通过以下链接跳转: cocos2d-x入 ...

  3. 微信5.0 Android版飞机大战破解无敌模式手记

    微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...

  4. 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)

    最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:coco ...

  5. Cocos2d-x飞机大战教程笔记

    咳咳~跟着大神的教程学做Cocos2d-x的飞机大战...鉴于我是那种跟着教程都会出非常多错的人,所以还是一路跟着做些笔记比較好.并且因为是用课余时间,所以仅仅能断断续续地做,写下来也好让自己别忘记~ ...

  6. js实例--飞机大战

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...

  7. 用Javascript模拟微信飞机大战游戏

    最近微信的飞机大战非常流行,下载量非常高. 利用JS进行模拟制作了一个简单的飞机大战[此源码有很多地方可以进行重构和优化] [此游戏中没有使用HTML5 任何浏览器都可以运行]. 效果图: 原理:利用 ...

  8. 飞机大战编写以及Java的面向对象总结

    面向对象课程完结即可编写一个简单的飞机大战程序.我觉得我需要总结一下 飞机大战中类的设计: 父类:FlyingObject(抽象类) 接口:Award .Enemy 子类:Hero.Bullet.Ai ...

  9. 用DIV+Css+Jquery 实现的旧版微信飞机大战。

    用jquery 实现的旧版微信飞机大战. 以前一直都是做后台和业务逻辑,前端很少去做, 现在个小游戏. 方向键控制方向,Ctrl 键 放炸弹(当然你的有炸弹,哈哈)! 主要都是用div+Css实现的, ...

随机推荐

  1. 「LOJ10150」括号配对

    [题目] Hecy 又接了个新任务:BE 处理.BE 中有一类被称为 GBE. 以下是 GBE 的定义: 空表达式是 GBE 如果表达式 A 是 GBE,则 [A] 与 (A) 都是 GBE 如果 A ...

  2. Android BroadcastReceiver 发送有序广播

    普通广播(Normal Broadcast): 一,优缺点:和有序广播的优缺点相反! 二,发送广播的方法:sendBroadcast() 有序广播(Ordered Broadcast): 一,优缺点 ...

  3. 三维重建:SLAM相关的一些术语解释

    SLAM是一个工程问题,再次复习一下工程中可能用到的名词解释. 还是不要看了,高翔的科普读物已经出版了,读他的<slam十四讲>就可以了. 一.度量相关: 世界坐标系:描述图像的平面坐标系 ...

  4. C#遍历/反射 属性/字段

    public static string SortParam<T>(T t) { string tStr = string.Empty; if (t == null) { return s ...

  5. Luogu P1365 WJMZBMR打osu! / Easy

    概率期望专题首杀-- 毒瘤dp 首先根据数据范围推断出复杂度在O(n)左右 但不管怎么想都是n^2-- 晚上躺在床上吃东西的时候(误)想到之前有几道dp题是通过前缀和优化的 而期望的可加性又似乎为此创 ...

  6. Html-如何正确给table加边框

    一般来说,给表格加边框都会出现不同的问题,以下是给表格加边框后展现比较好的方式 <style> table,table tr th, table tr td { border:1px so ...

  7. S-HR快速查看shr日志

    http://localhost:6888/shr/appData.do?method=getApplicationLog&logFile=apusic.log.0&instance= ...

  8. 三列布局中 float引发的一个问题-当“非float的元素”和“float的元素”在一起的时候,如果非float元素在先,那么float的元素将受到排斥。

    样式: 效果是这样的: 解答:我们发现:靠右的元素自动换行了,原因是:当“非float的元素”和“float的元素”在一起的时候,如果非float元素在先,那么float的元素将受到排斥. 解决方法: ...

  9. Centos7下的有多个版本的tomcat部署项目并访问

    在tomcat下部署项目,第一次访问成功.但是发现有一个页面没有成功加载,发现是部署时少了一些东西.也不想去找出具体少了什么,直接把原来的项目移除,重新加载项目.重启tomcat,这时惊喜来了. 重启 ...

  10. 07.网络编程-3.TCP

    1.tcp相关介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC ...