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 ...
随机推荐
- [使用]Git--命令行
如何利用终端命令将文件上传到github远程服务器 (1) git status 命令查看下状态. (2) git pull 更新代码,确保代码是库上最新代码,防止覆盖其他人的提交. (3) git ...
- 【百度地图API】手机浏览器抓包工具及其使用方法
原文:[百度地图API]手机浏览器抓包工具及其使用方法 摘要:为了测试地图API在手机浏览器上的性能,需要给手机浏览器设置代理.通过代理,我们可以在PC上获取到抓包数据.进而对性能做进一步分析. -- ...
- Theano学习笔记(一)——代数
标量相加 import theano.tensor as T from theano import function x = T.dscalar('x') y = T.dscalar('y') z = ...
- Android SDK 2.2 离线安装
android的普通安装方法非常easy,不必多说. 因为普通安装方法速度非常慢,对一般的用户要数小时的时间等待. 为更高速安装,能够採取离线安装方法.即,先分别下载所需包,再安装. 一,首先下载SD ...
- SQL语句分享[不定期更新]
查询临时表 if object_id('')>0 查询表中的数据 select 'insert into ta1(col1,col2,col3) values('''+ltrim(列1)+''' ...
- HTML5实现涂鸦板
原文:HTML5实现涂鸦板 最近闲的,看了看html5,强大的绘图功能让我惊奇,于是,写了个小玩意---涂鸦板,能实现功能有:画画,改色,调整画笔大小 html5的绘图可以分为点,线,面,圆,图片等, ...
- uva 1560 - Extended Lights Out(枚举 | 高斯消元)
题目链接:uva 1560 - Extended Lights Out 题目大意:给定一个5∗6的矩阵,每一个位置上有一个灯和开关,初始矩阵表示灯的亮暗情况,假设按了这个位置的开关,将会导致周围包含自 ...
- AutoCAD 2012安装错误,与.net framework (1603错误)以及ms2005vc++的问题。
首先,这是AutoCAD2012的问题.因为,如果一台计算机已经安装了这些软件,AutoCAD是无法识别出来,因此AutoCAD就只能报错.正确的做法是:如果检测到这些软件已经被安装,则需要忽略这些问 ...
- ViewPaper实现轮播广告条
使用V4包中的viewPaper组件自己定义轮播广告条效果. 实现viewpaper的滑动切换和定时自己主动切换效果. 上效果图 布局文件 <RelativeLayout xmlns:andro ...
- Asterisk 未来之路3.0_0003
原文:Asterisk 未来之路3.0_0003 Asterisk: The Hacker's PBX 如果电信公司忽视了asterisk,那么正在处于危险中.asterisk 良好的扩展性,能够创建 ...