关于Cocos2d-x中地图轮播的实现
播放背景,两个背景的图片是一样的,紧挨着循环播放,以下代码写在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中地图轮播的实现的更多相关文章
- android中广告轮播图总结
功能点:无限轮播.指示点跟随.点击响应.实现思路: 1.指示点跟随,指示点通过代码动态添加,数量由图片数量决定. 在viewpager的页面改变监听中,设置点的状态选择器enable,当前页时,set ...
- angularjs中使用轮播图指令swiper
我们在angualrjs移动开发中遇到轮播图的功能 安装 swiper npm install --save swiper 或者 bower install --save swiper 引入文件 ...
- 使用BootStrap框架中的轮播插件
在使用bootstrap框架中的轮播插件时,效果做出来后,无法通过点击小圆行的按钮来选择特定的图片. 后面发现是最开始的<div>标签中少写了一个id.一开始<div>标签是这 ...
- js轮播图和bootstrap中的轮播图
js中的轮播图案例: <!DOCTYPE html><html lang="en"> <head> <meta charset=" ...
- 利用axure软件实现app中的轮播图功能
1.首先在axure软件中插入一张手机模型图片并调整为合适大小 2.在需要展示轮播图片位置拖入[动态面板]并且调整大小 拖入后双击动态面板,填入面板名称,并且添加面板状态(此处轮播图为三张,所以有三个 ...
- [转][echarts]地图轮播
代码片断: 来自:https://blog.csdn.net/qq_36947128/article/details/90899564 function Play(){ chart.dispatchA ...
- ionic1项目中 ion-slide轮播用ng-repeat遍历数据后自动循环出问题
<ion-slide-box>属性中循环播放:dose-continue=‘true’,但是在项目遇到这样一个问题,从后台获取数据后将数据ng-repeat到<ion-slide&g ...
- vue组件中的轮播实现
一.直接上代码 <template> <el-row class="Slide"> <el-row class="title"&g ...
- React中使用CSSTransitionGroup插件实现轮播图
动画效果,是一个页面上必不可少的功能,学习一个新的东西,当然就要学习,如何用新的东西,用它的方法去实现以前的东西啦.今天呢,我就在这里介绍一个试用react-addons-css-transition ...
随机推荐
- 关于Andorid的RecyclerView在V7包下找不到的解决办法
关于Andorid的RecyclerView在V7包下找不到的解决办法 最近在学习使用RecyclerView替换现有的ListView,看了几篇文章.当准备自己动手实现的时候发现,V7包下找不到 ...
- Android广播BroadcastReceiver
Android 系统里定义了各种各样的广播,如电池的使用状态,电话的接收和短信的接收,开机启动都会产生一个广播.当然用户也可以自定义自己的广播. 既然说到广播,那么必定有一个广播发送者,以及广播接收器 ...
- Python type() 函数
描述 type() 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象.类似isinstance() isinstance() 与 type() 区别: type() 不会认为子类是一 ...
- HDU--Elevator(水题)
Elevator nid=24#time"> Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^ 题目描写叙述 The high ...
- Msys2:windows下好用的unix模拟器
msys2是基于mingw的bash模拟器,他为在windows下使用类似unix的环境提供了方便.同时,他还是基于mingw的,所以,他生成的也是原生的windows程序. msys2官方网站是:h ...
- putty的复制和粘贴
putty在终端中的复制--->只要用左键选中即是复制了,千万不要按右键. 在windows下的复制后,在终端粘贴---> 只要右键即可.
- THINKPHP导入全部post参数
@extract($_POST);//导入全部POST参数直接使用变量
- 【Android】6.2 AlertDialog(警告对话框)
分类:C#.Android.VS2015: 创建日期:2016-02-08 一.简介 AlertDialog也是Android系统当中常用的对话框之一. 在一个AlertDialog中,可以有一个Bu ...
- Books from Joe's blog
Some books that I really enjoy(ed) It's been quite some time since I blogged about what I've been re ...
- linux命令(30):tail
linux ---tail命令 linux中tail命令---用于查看文件内容 最基本的是cat.more和less. 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /e ...