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

.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. Moco模拟服务器实现请求&响应 (一)

    接口测试Moco工具 1.使用Moco模拟,首先需要下载Moco 的jar 包,下载链接: http://central.maven.org/maven2/com/github/dreamhead/m ...

  2. 「LOJ10150」括号配对

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

  3. Python描述符:property()函数的小秘密

    描述符:将某种特殊类型的类的实例指派给另一个类的属性(注意:这里是类属性,而不是对象属性).而这种特殊类型的类就是实现了__get__,__set__,__delete__这三个方法中的一个或多个的新 ...

  4. php解析 html类库 simple_html_dom

    如果从字符串加载html文档,需要先从网络上下载.建议使用cURL来抓取html文档并加载DOM中. 查找html元素 可以使用find函数来查找html文档中的元素.返回的结果是一个包含了对象的数组 ...

  5. Eclipse 添加本地 SVN插件以及运行项目的流程

    去网上下载SVN插件包.里面包含文件如图: 把features和plugins文件夹里面的东西全部复制粘贴到eclipse安装目录下的features和plugins文件夹中就行.然后重启eclips ...

  6. Android 第一行代码(第二版)分享

    今天从网上好不容易看到了别人转发的pdf版的 第一行代码通过下载我把它存在了百度云里面了与大家共享 http://pan.baidu.com/s/1bRztF4

  7. 【Linux】磁盘分区

    我们在Linux操作过程中,可能会遇到磁盘分区的问题.这篇文章是对/dev/sdb 这块磁盘进行分区. linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a—d) ...

  8. QS之force(2)

    Examples 1) Force input1 to 0 at the current simulator time. force input1 0 2) Force the fourth elem ...

  9. ui界面设计

    UI即User Interface(用户界面)的简称,指对软件的人机交互.操作逻辑.界面美观的整体设计.好的UI设计不仅是让软件变得有个性有品位,还要让软件的操作变得舒适简单.自由,充分体现软件的定位 ...

  10. Java 8 函数接口详细教程

    ay = new byte[array.length]; for (int i = 0; i < array.length; i++) { transformedArray[i] = funct ...