一、创建文件~

文件名:BackgroundLayer.h

BackgroundLayer.cpp

架构就跟前面的一样,我就直接进入正题 啦,而且github有完整代码,欢迎下载~

二、创建滚动的背景

为毛要创建滚动的背景呢= =,因为我们要控制飞机,但总得有往前飞的感觉,所以呢~你懂的~

然后方法就很简单啦,就是用2张图片,当然是上下能对接起来的那种,然后不停的滚那滚就好啦~

方法呢,首先在.h文件中进行声明

void moveBackground(float dt);             //滚动图片的函数

    Sprite *_background1;                 //背景图片
Sprite *_background2;

然后,我们就默默实现下~

首先在init()中添加~

_background1 = Sprite::createWithSpriteFrameName("background.png");
_background1->setAnchorPoint(Vec2::ZERO);
_background1->setPosition(Vec2::ZERO);
this->addChild(_background1); _background2 = Sprite::createWithSpriteFrameName("background.png");
_background2->setAnchorPoint(Vec2::ZERO);
_background2->setPosition(Vec2(_background1->getPositionX(), _background1->getPositionY() + _background1->getContentSize().height));
this->addChild(_background2);

这样就初始化好那个图片的位置啦啦~

然后就是关键的滚动的函数~

void BackgroundLayer::moveBackground(float dt)
{
if (_background2->getPositionY() <= )
{
_background1->setPositionY();
}
_background1->setPositionY(_background1->getPositionY() - );
_background2->setPositionY(_background1->getPositionY() + _background1->getContentSize().height - ); }

简单吧~,就是一会我们不断的调用这个函数,然后每次调用就让图片往下走,一旦第一张出了屏幕,就立马放回原来的位置,就是这么简单~

然后就是关键的关键啦~

this->schedule(schedule_selector(BackgroundLayer::moveBackground), 1.0 / );

别看就之后一行代码~,这是cocos封装好的,要不很麻烦的~,现在会用就好啦,这么写,就是在游戏过程中会以1 /60的间隔调用这个函数,这样子的话,我们人眼看起来就是动画的感觉~,大工告成

三、最后的最后

你发现运行后没有反应~,那是因为你还没有加入到Scene中,而且会有很多层,所以我们在GameScene中添加一个函数

//.h
    void initLayer();

    BackgroundLayer *_background;
//.cpp
void GameScene::initLayer()
{
//add background;
_background = BackgroundLayer::create();
this->addChild(_background);
}

四~效果图~

cocos2dx游戏开发——微信打飞机学习笔记(五)——BackgroundLayer的搭建的更多相关文章

  1. cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建

    一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何 ...

  2. cocos2dx游戏开发——微信打飞机学习笔记(七)——Enemy的搭建

    一.文件创建~ Enemy.h Enemy.cpp 二.How to do? 由于我是已经完成成个游戏的功能,所以我会将游戏中enemy所需要的很多功能基本上都先考虑到了,如果大家自己在做的时候也许没 ...

  3. cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备

    一.环境的搭建 1.Windows开发准备: (1)软件下载及安装 •下载Cocos2d-x 最新版本:http://www.cocos2d-x.org/download 或者从Cocos2d-x G ...

  4. cocos2dx游戏开发——微信打飞机学习笔记(九)——BulletLayer的搭建

    一.创建文件~ BulletLayer.h BulletLayer.cpp 二.How to do? (1)实例化BulletLayer方法的实现~ Bullet(PlayerLayer* temp) ...

  5. cocos2dx游戏开发——微信打飞机学习笔记(八)——EnemyLayer的搭建

    一.创建文件= =               EnemyLayer.h               EnemyLayer.cpp Ps:我绝对不是在凑字数~. 二.How to do? (1)一些宏 ...

  6. cocos2dx游戏开发——微信打飞机学习笔记(十)——碰撞检测的搭建

    一.七说八说        大家都发现了= =,做了那么多,发现就是摆设,完全没有打飞机的感觉,没有实现碰撞的监测.比如说呢,子弹和敌机,玩家与敌机就是需要有碰撞检测的说,然后在这篇我想会很长很长的教 ...

  7. cocos2dx游戏开发——微信打飞机学习笔记(二)——游戏框架

    一.游戏的基本框架: WelcomeScene    ——>    GameScene   ——>   GameOverScene ||                           ...

  8. cocos2dx游戏开发——微信打飞机学习笔记(六)——PlayerLayer的搭建

    一.创建文件~ PlayerLayer.h PlayerLayer.cpp 一般类名都会和文件名有关系的~(在这里当然是一样) 二.How to do? 1.首先就是放一个飞机~ CC_SYNTHES ...

  9. cocos2dx游戏开发——微信打飞机学习笔记(四)——GameScene的搭建

    一.创建文件 首先呢,就是那个创建新的.h 和 .cpp 的文件,然后可以起名为GameScene 最重要的就是一定要创建在Classes的目录下哦= =,别手抖= =. 二.GameScene.h和 ...

随机推荐

  1. Gradle用户指南(2)-基本命令

    1.定义任务 使用task 关键字来定义gradle 任务 例:创建一个 build.gradle 命名的文件: build.gradle task hello { doLast { println ...

  2. sed 指令

    sed -e 's/:/ /g' 将待处理文本行中:替换为空格, s/A/B/g 是sed中的替换命令, 将A替换为B, 其中,A可以是正则表达式. g表示全部替换. sed 指令 瀏覽數 : 6,5 ...

  3. explicit构造函数

    explicit构造函数 Explicit Constructors(显式构造函数)收藏 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面 ...

  4. word双面打印的方法

    首先要明白打印的过程 先进入打印机的纸张顶部,肯定是先打印,这样就确定了纸张放置的方向,不会放倒了 肯定是打印在纸张的向上的那一面,这样就确定了打印的正反面 纸张打印的顺序肯定是从上到下,这样就确定了 ...

  5. 安卓(Android)手机如何安装APK?

    我大天朝的安卓手机只能在一个被阉割的APP市场里玩耍,有些APP可能需要直接安装APK文件.APK 是 Android Package (安卓安装包)安卓手机如何安装APK呢? 在电脑上下载安装APK ...

  6. MFC 中控件的启用与禁用

    启用和禁用控件可以调用CWnd::EnableWindow 函数. BOOL EnableWindow(BOOL bEnable = TRUE); 判断控件是否可用可以调用 CWnd::IsWindo ...

  7. redis和memcached比较

    1.Memcached采用客户端-服务器的架构,服务器维护了一个键-值关系的数据表,服务器之间相互独立,互相之间不共享数据也不做任何通讯操作.客户端需要知道所有的服务器,并自行负责管理数据在各个服务器 ...

  8. java笔记--超级类Object多线程的应用+哲学家进餐算法内部类与多线程结合

    关于Object类中的线程方法: Object类是所有Java类的 父类,在该类中定义了三个与线程操作有关的方法,使得所有的Java类在创建之后就支持多线程 这三个方法是:notify(),notif ...

  9. ruby代码重构第一课

    (文章是从我的个人主页上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com) 新手写代码的时候往往会出现很多重复的代码没有提取出来,大师高瞻远瞩总能提点很多有意义的改进,今天重 ...

  10. log2取整效率测试

    RMQ问题中有个ST算法,当然还有个标准算法.LCA问题可以转化为带限制的RMQ(RMQ+-1)问题来解决.我们姑且认为这些问题的时间复杂度是查询$O(1)$的.但是,注意到对于RMQ(/+-1)问题 ...