播放背景,两个背景的图片是一样的,紧挨着循环播放,以下代码写在playBackground()方法中,并在GameScene.cpp的init方法中调用。

void GameScene::playBackground()
{

auto winSize = Director::getInstance()->getWinSize();  //获得OpenGL视图的大小,不是可见屏幕的大小,以点为单位

int delta = 10; //补缝用的,两个背景紧挨着移动可能出现缝隙,轮播图的像素高应该比设备屏幕高的大一点(+0.01)(其实可以删去) 2.后面的图应该稍微往前靠一点 这样就不会有缝隙了

auto bg1 = Sprite::createWithSpriteFrameName("background.png");
bg1->setScaleX(winSize.width / bg1->getContentSize().width);  //让地图的宽和屏幕一样宽
bg1->setScaleY(winSize.height / bg1->getContentSize().height + 0.01); //让地图的高比屏幕高一点(其实可以设置成一样高,这里+0.01可以删除)
bg1->setAnchorPoint(Vec2(0, 0));
addChild(bg1);

auto move1 = MoveBy::create(30, Vec2(0, -winSize.height));
auto callfunc1 = CallFunc::create([bg1](){  //设置回调函数,在移动完地图后,执行这个方法,回到最初的位置
  bg1->setPosition(Vec2(0, 0));
});
auto action1 = Sequence::create(move1, callfunc1, nullptr);
bg1->runAction(RepeatForever::create(action1));

auto bg2 = Sprite::createWithSpriteFrameName("background.png");
bg2->setScaleX(winSize.width / bg2->getContentSize().width);  //让地图的宽和屏幕一样宽
bg2->setScaleY(winSize.height / bg2->getContentSize().height + 0.01); //让地图的高比屏幕高一点(其实可以设置成一样高,这里+0.01可以删除)
bg2->setAnchorPoint(Vec2(0, 0));
bg2->setPosition(Vec2(0, bg1->getPositionY() + winSize.height - delta));
addChild(bg2);

auto move2 = MoveTo::create(30, Vec2(0, 0));
auto callfunc2 = CallFunc::create([bg2, bg1, winSize, delta](){  //设置回调函数,在移动完地图后,执行这个方法,回到最初的位置
  bg2->setPosition(Vec2(0, bg1->getPositionY() + winSize.height - delta));
});
auto action2 = Sequence::create(move2, callfunc2, nullptr);
bg2->runAction(RepeatForever::create(action2));

}

关于Cocos2d-x中地图轮播的实现的更多相关文章

  1. android中广告轮播图总结

    功能点:无限轮播.指示点跟随.点击响应.实现思路: 1.指示点跟随,指示点通过代码动态添加,数量由图片数量决定. 在viewpager的页面改变监听中,设置点的状态选择器enable,当前页时,set ...

  2. angularjs中使用轮播图指令swiper

    我们在angualrjs移动开发中遇到轮播图的功能 安装 swiper  npm install --save swiper   或者 bower install --save swiper 引入文件 ...

  3. 使用BootStrap框架中的轮播插件

    在使用bootstrap框架中的轮播插件时,效果做出来后,无法通过点击小圆行的按钮来选择特定的图片. 后面发现是最开始的<div>标签中少写了一个id.一开始<div>标签是这 ...

  4. js轮播图和bootstrap中的轮播图

    js中的轮播图案例: <!DOCTYPE html><html lang="en"> <head> <meta charset=" ...

  5. 利用axure软件实现app中的轮播图功能

    1.首先在axure软件中插入一张手机模型图片并调整为合适大小 2.在需要展示轮播图片位置拖入[动态面板]并且调整大小 拖入后双击动态面板,填入面板名称,并且添加面板状态(此处轮播图为三张,所以有三个 ...

  6. [转][echarts]地图轮播

    代码片断: 来自:https://blog.csdn.net/qq_36947128/article/details/90899564 function Play(){ chart.dispatchA ...

  7. ionic1项目中 ion-slide轮播用ng-repeat遍历数据后自动循环出问题

    <ion-slide-box>属性中循环播放:dose-continue=‘true’,但是在项目遇到这样一个问题,从后台获取数据后将数据ng-repeat到<ion-slide&g ...

  8. vue组件中的轮播实现

    一.直接上代码 <template> <el-row class="Slide"> <el-row class="title"&g ...

  9. React中使用CSSTransitionGroup插件实现轮播图

    动画效果,是一个页面上必不可少的功能,学习一个新的东西,当然就要学习,如何用新的东西,用它的方法去实现以前的东西啦.今天呢,我就在这里介绍一个试用react-addons-css-transition ...

随机推荐

  1. PO_标准采购流程请购采购接受入库(流程)

    2014-06-03 Created By BaoXinjian

  2. Linux内核(7) - 设备模型(上)

    对于驱动开发来说,设备模型的理解是根本,毫不夸张得说,理解了设备模型,再去看那些五花八门的驱动程序,你会发现自己站在了另一个高度,从而有了一种俯视的感觉,就像凤姐俯视知音和故事会,韩峰同志俯视女下属. ...

  3. Linux内核(5) - 内核学习的相关资源

    “世界上最缺的不是金钱,而是资源.”当我在一份报纸上看到这句大大标题时,我的第一反应是——作者一定是个自然环保主义者,然后我在羞愧得反省自身的同时油然生出一股对这样的无产主义理想者无比崇敬的情绪来. ...

  4. 使用 C# 开发智能手机软件:推箱子(十四)

    这是"使用 C# 开发智能手机软件:推箱子"系列文章的第十四篇.在这篇文章中,介绍 Window/ErrorMsgDlg.cs 源程序文件.这个源程序文件包括 ErrorMsgDl ...

  5. 【Oracle错误集锦】:ORA-12154: TNS: 无法解析指定的连接标识符

    相信这个错误大家都不陌生,仅仅要安装使用过Oracle的预计都遇到过这个问题,一般出如今用PL/SQL连接Oracle数据库的时候发生的. 导致这个错误的原因以及解决方式都是多种多样的,我也是三番五次 ...

  6. GO1.6语言学习笔记1-基础篇

    一.GO语言优势   可直接编译成机器码,Go编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖 静态类型语言,但是有动态语言的感觉 语言层面支持并发.Goroutine和channel ...

  7. Python之反射练习

    # 什么是反射?可以用字符串的方式去访问对象的属性 class Test(): _name = "sss" def fun(self): return "Hellowor ...

  8. Spring Bean的生命周期详解(转)

    Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...

  9. [svc][op]SSH公钥认证+优化

    一 ssh公钥认证流程: sshclinet机器:产生公私钥(公钥相当于一把锁) sshclient:将公钥发给sshserver(抛出锁子) sshclinet去连sshserver不需要密钥 二 ...

  10. PHP 对 memcache操作类

    <span style="font-size:18px;">class myMemcache { private $memcache; /** * 一般建议这2个值做成 ...