cocos2d(背景图片循环滚动)
背景图片循环滚动 使用action 实现的:
主要有两个背景图片交替循环滚动:我选的两个背景图片的宽度都是1024的 ,所以定义了#define BGIMG_WIDTH 1024
代码如下:
在HelloWorld.h的头文件中声明两个背景图片精灵
#import "cocos2d.h" // HelloWorldLayer
@interface HelloWorldLayer : CCLayer
{
CCSprite *bagSprite1;
CCSprite *bagSprite2;
}
在.m文件中实现的部分代码:
#import "HelloWorldLayer.h" #import "AppDelegate.h" #pragma mark - HelloWorldLayer #define BGIMG_WIDTH 1024 // HelloWorldLayer implementation
@implementation HelloWorldLayer -(id) init
{ if( (self=[super init]) ) {
CGSize winSize=[CCDirector sharedDirector].winSize; bagSprite1=[CCSprite spriteWithFile:@"bag1.jpg"];
bagSprite2=[CCSprite spriteWithFile:@"bag2.jpg"]; bagSprite1.anchorPoint=ccp(0,0);
bagSprite2.anchorPoint=ccp(0,0);
[bagSprite1 setScaleY:winSize.height/bagSprite1.textureRect.size.height]; //修改背景图片的高度
[bagSprite2 setScaleY:winSize.height/bagSprite2.textureRect.size.height];
bagSprite1.position=ccp(0,0);
bagSprite2.position=ccp(-BGIMG_WIDTH,0); //第二张图片的起始位置在第一张的左边
//添加精灵
[self addChild:bagSprite1 z:1];
[self addChild:bagSprite2 z:1]; CCMoveBy *bagSprite1MoveBy=[CCMoveBy actionWithDuration:6.0f position:ccp(BGIMG_WIDTH,0)];
CCMoveBy *bagSprite2MoveBy=[CCMoveBy actionWithDuration:6.0f position:ccp(BGIMG_WIDTH,0)];
CCCallBlock *bagSprite1Finish=[CCCallBlock actionWithBlock:^(void){[self actionFinishedWithSprite:bagSprite1];}];
CCCallBlock *bagSprite2Finish=[CCCallBlock actionWithBlock:^(void){[self actionFinishedWithSprite:bagSprite2];}]; [bagSprite1 runAction:[CCSequence actions:bagSprite1MoveBy,bagSprite1Finish,nil]];
[bagSprite2 runAction:[CCSequence actions:bagSprite2MoveBy,bagSprite2Finish,nil]]; }
return self;
}
-(void)actionFinishedWithSprite:(CCSprite*)theSprite{
if(theSprite.position.x==0){
CCMoveBy *bagSpriteMoveBy=[CCMoveBy actionWithDuration:6.0f position:ccp(BGIMG_WIDTH,0)];
CCCallBlock *bagSpriteFinish=[CCCallBlock actionWithBlock:^(void){[self actionFinishedWithSprite:theSprite];}];
[theSprite runAction:[CCSequence actions:bagSpriteMoveBy,bagSpriteFinish,nil]];
}else if(theSprite.position.x==BGIMG_WIDTH){
[theSprite setPosition:ccp(-BGIMG_WIDTH,0)];
CCMoveBy *bagSpriteMoveBy=[CCMoveBy actionWithDuration:6.0f position:ccp(BGIMG_WIDTH,0)];
CCCallBlock *bagSpriteFinish=[CCCallBlock actionWithBlock:^(void){[self actionFinishedWithSprite:theSprite];}];
[theSprite runAction:[CCSequence actions:bagSpriteMoveBy,bagSpriteFinish,nil]];
}
} @end
运行结果:
cocos2d(背景图片循环滚动)的更多相关文章
- 图片循环滚动效果shader
背景无限循环滚动效果,有X和Y轴的速度控制,方便控制.见下图,操作步骤同之前的背景循环设置. shader如下: Shader "Custom/Scroll" { Properti ...
- unity 背景无限循环滚动效果
背景无限循环滚动效果如下示: 步骤如下: 导入背景图片后,设置图片的格式,如下图: 2.图片格式也可以设置是Texture格式,但是Wrap Mode 一定要是Repeat[重复发生]:然后记得App ...
- 使用UIScrollView 结合 UIImageView 实现图片循环滚动
场景: 在开发工作中,有时我们需要实现一组图片循环滚动的情况.当我们使用 UIScrollView 结合 UIImageView 来实现时,一般 UIImageView 会尽量考虑重用,下面例子是以( ...
- 基于html5可拖拽图片循环滚动切换
分享一款基于html5可拖拽图片循环滚动切换.这是一款支持手机端拖拽切换的网站图片循环滚动特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id="s ...
- 特殊例子--JavaScript代码实现图片循环滚动效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 滚动时div的背景图片随之滚动
在浏览一些网站时发现有一种效果是当滚动时看到某一DIV的背景也会随之滚动,如下: 当滚动时内容位置保持不变,但是内容后面的背景却在随着滚动.随之我通过审查元素看到了其是通过background-pos ...
- js 动态设置 div 背景图片 并滚动显示
var imgs =["../img/index/bgstyle/style1/index_top_bg2.jpg", "../img/index/bgstyle/sty ...
- iOS 图片循环滚动(切片效果)
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIAp ...
- UIScrollView 图片循环滚动
1:假如有6个图片:那个,Scrollview的大小加 7 个图片的大小 2: //ImageScrollView; UIScrollView *imageScroll = [[UIScrollVie ...
随机推荐
- 变焦控制ZoomControls
在安卓的webview中有这个点击放大缩小button,当时就在想如何实现那种效果,弄一个两个图标的ImageButton.但感觉又有些麻烦,昨天看疯狂安卓书.无意中发现另一个 ZoomButtons ...
- C语言星号的秘密
C语言星号的秘密 星号的秘密 1.乘法运算符 2.定义指针 int *p = 0; 还是 int* p = 0;? 后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int ...
- MVC 缓存1
MVC 缓存 为什么要讲缓存.缓存到底有什么作用? 下面我们来说一个场景我们有一个首页菜单的布局基本是不会经常发生的变化,如果动态生成的 Web 页被频繁请求并且构建时需要耗用大量的系统资源,那么,如 ...
- 从头开始学JavaScript (三)——数据类型
原文:从头开始学JavaScript (三)--数据类型 一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属 ...
- 点击鼠标获取元素ID
原文:点击鼠标获取元素ID public partial class Form1 : Form { public Form1() { InitializeComponent(); } private ...
- 步步详解近期大火的density_peak超赞聚类
近期忙着在公司捣腾基于SOA的应急框架,还是前两周才在微博上看见了density_peak,被圈内好些人转载. 由于这个算法的名字起的实在惹眼,都没好意思怎么把这个算法名字翻译成中文,当然更惹眼的是, ...
- C++语言笔记系列之十二——C++的继承
C++的继承 1.继承方式 public(公有继承) 派生类中的成员能够訪问基类的public成员和protected成员,但不能訪问基类的private成员. 派生类的对象仅仅能訪问基类的publi ...
- Unix/Linux环境C编程新手教程(41) C语言库函数的文件操作具体解释
上一篇博客我们解说了怎样使用Linux提供的文件操作函数,本文主要解说使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #in ...
- ASP.NET MVC 插件化
ASP.NET MVC 插件化机制 2015-03-14 22:25 by 杨康新, 1328 阅读, 15 评论, 收藏, 编辑 概述 nopCommerce的插件机制的核心是使用BuildMana ...
- jenkins综合cobertura,来电显示cobertura的report
我的项目是使用maven作为构建工具.左右maven如何整合jenkins请参阅: http://blog.csdn.net/yaominhua/article/details/40684355 本文 ...