cocos2dx 3.x(一张背景图实现循环轮播)

 1 //
 2 //  MainScene.hpp
 3 //  helloworld
 4 //
 5 //  Created by apple on 16/9/19.
 6 //
 7 //
 8
 9 #ifndef MainScene_hpp
10 #define MainScene_hpp
11
12 #include <stdio.h>
13 #include "cocos2d.h"
14 using namespace cocos2d;
15 //定义一个场景类
16
17 class MainScene : public cocos2d::Layer{
18 private:
19     // 成员变量(私有的)
20     cocos2d::Sprite *sprite;//定义一个精灵成员变量
21     cocos2d::Sprite *sprite2;
22
23 public:
24     virtual bool init(); // 虚函数,返回值为布尔类型,没有函数
25 //    static CCScene * scene();
26     static cocos2d::Scene* createScene();//static是一个类方法返回场景
27
28     void movebd(float times);//注册自定义定时调用方法函数
29
30     CREATE_FUNC(MainScene);
31 };
32
33
34 #endif /* MainScene_hpp */
 1 //
 2 //  MainScene.cpp
 3 //  helloworld
 4 //
 5 //  Created by apple on 16/9/19.
 6 //
 7 //
 8
 9 #include "MainScene.hpp"
10 Scene * MainScene::createScene()
11 {
12      auto scene = Scene::create();
13     //创建层
14     MainScene *layer = MainScene::create();
15     scene->addChild(layer);
16     return scene;
17 }
18 bool MainScene::init(){
19     if (!Layer::init()) {
20         return false;
21     }
22
23
24
25     //定义初始位置
26     sprite = Sprite::create("Cow100_background.png");
27     sprite ->setPosition(0, 25);
28     sprite->setAnchorPoint(Vec2(0, 0));//设置精灵的锚点
29     sprite ->setScale(2.4f);//放大精灵尺寸2.4倍
30     //    sprite ->setContentSize(Size(200, 100));
31     this->addChild(sprite);// 添加到层
32
33
34     sprite2 = Sprite::create("Cow100_background.png");//与上面背景精灵一样的,只是坐标点不一样
35     sprite2 ->setPosition(480, 25);//两张图并行紧贴一起,下面调用定时器实现两张图一起循环移动
36     sprite2->setAnchorPoint(Vec2(0, 0));
37     sprite2 ->setScale(2.4f);
38     //    sprite2 ->setContentSize(Size(200, 100));
39     this->addChild(sprite2);// 添加到层
40
41
42
43     //    this->schedule(schedule_selector(MainScene::movebd));
44     schedule(schedule_selector(MainScene::movebd), 0.05);// 创建自定义定时器0.05秒调用一次
45
46     return true;
47 }
48
49
50 void MainScene::movebd(float times)
51 {
52
53     // 获取到当前精灵的坐标,X轴-1,Y轴不-
54     sprite->setPosition(Point(sprite->getPositionX()-1,sprite->getPositionY()));
55     sprite2->setPosition(Point(sprite2->getPositionX()-1,sprite2->getPositionY()));
56     if(sprite->getPositionX() == -480){//这里是根据自己的屏幕尺寸设定的,判断精灵X轴坐标的移动长度,也就是背景的长度
57         sprite ->setPosition(480, 25);//重置背景图坐标点
58
59     }
60     if(sprite2->getPositionX() == -480){//这是第二张背景图
61         sprite2 ->setPosition(480, 25);
62     }
63
64
65 }
时间: 2024-08-07 12:15:16

cocos2dx 3.x(一张背景图实现循环轮播)的相关文章

css中用一张背景图做页面的技术有什么优势?

简单介绍一下 CSS Sprites 的优点: 当用户往U盘中拷200张图片,会等很久.但是如果弄成一个文件,再拷贝就会快很多. CSS Sprites 的目的就是通过整合图片,减少对服务器的请求数量,从而加快页面加载 速度. 实现方法: 首先将小图片整合到一张大的图片上 然后根据具体图标在大图上的位置,给背景定位.background-position:-8px -95px;或者简写background:url(图片路径) no-repeat 8px -95px; 转载于: http://ui

Android ViewPager实现循环轮播图

一.原理 ViewPager是Android中使用频率相对较高的view组件,同时对滑动过程中的事件进行了处理,因此非常适合轮播图.关于轮播图的实现,有很多方法,使用HorizontalView或者RecylerView也可以实现,但是需要处理fling操作,这里我们用ViewPager避免这些工作. 网上有很多关于ViewPager轮播的轮播实现,其原理大多数给PagerAdapter的getCount 放大N倍,N大于100,1000等.这里我们使用另一种思路,数据映射. 数据映射方案:假设

如何让一张背景图充满整个屏幕

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width, height=device-height,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"

iOS: 无限循环轮播图简单封装

轮播图思路: 1.首先要有一个ScrollView和两张图片,把图片放到ScrollView上. 2.要想滚动ScrollView的宽度需设置屏宽的2倍. 3.循环滚动,当滚动到最后一张图片时,采用偏移的方法,将偏移量归零,回到第一张图片. 4.将第二张的图片上的所有值赋给第一张图片. 5.设置让它自己滚动,需添加定时器. 需要的第三方数据库:SDWebImage m.文件内: #imporst "ScrollView.h" @interface ScrollView ()<UI

JS-特效 ~ 01. 事件对象、offset偏移/检测、无缝滚动、自动循环轮播图

Math.round ( ) :正书四舍五入,负数五舍六入 用定时器,先清除定时器 事件对象 event event:事件被触动时,鼠标和键盘的状态,通过属性控制 Offset:偏移,检测 1. 获取元素尺寸 2. 检测盒子的宽高     事件源.offsetLeft. /. ele.offsetWidth /返回的数值没有单位,是number类型 /包括内边距.边框,不包括外边距 3. 获取定位的元素的left和top值  offsetLeft / offsetTop 如果被获取的元素没有定位

解决两张背景图轮换过程中出现缝隙的问题

横版游戏中有用到多张图片轮番显示作为动态背景.但我在实际项目中,发现图片在滚动时有可能出现缝隙,影响了游戏体验.经过分析,这是因为重置缓冲图片时产生了时间差. 轮番显示的原理就是一张图片滚动,另外一张作为缓冲,滚动出屏幕的图片继而替补成为缓冲,这样周而复始地轮换下去. 举一个例子: void TestSprite::onEnter() { CCLayer::onEnter(); CCActionInterval *move1 = CCMoveBy::create(5, ccp(-480, 0))

前端性能之-为何要将多个图标放在一张背景图里?

很多网站喜欢将小图标拼在一个图片文件里. 然后在 CSS 中通过 background 定位访问图标, 访问量大的网站尤是如此. 为什么呢? 分开管理不是更加灵活吗?大家都这么做当然有它的优点, 但这同样存在缺点. 优点: A. 1 + 1 < 2图标放在一起, 可以令图标的总容量稍小一点. 这不是最重要的, 但我可以告诉你, 很多程序员都是完美主义者. B. 让连接次数大量减少用过 Opera 的朋友可能会对它那个显示图片下载的进度条印象很深, 它会显示 “已下载图片/图片总数”. 对于 We

三张Imageview实现无限图片轮播

代码部分: //  Created by 妖精的尾巴 on 15-8-24. //  Copyright (c) 2015年 妖精的尾巴. All rights reserved. // #import "ViewController.h" #define kImageCount 4 @interface ViewController ()<UIScrollViewDelegate> /** *滚动视图的控件 */ @property(nonatomic,strong)UI

无限循环轮播图之JS部分(原生JS)

JS逻辑与框架调用 1 <script type="text/javascript"> 2 var oBox = document.getElementById('box'); 3 var oPrev = document.getElementById('prev'); 4 var oNext = document.getElementById('next'); 5 var oUl = oBox.children[0]; 6 var aLi = oUl.children;