1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > cocos2d(背景图片循环滚动)

cocos2d(背景图片循环滚动)

时间:2019-05-24 22:13:32

相关推荐

cocos2d(背景图片循环滚动)

背景图片循环滚动 使用action 实现的:

主要有两个背景图片交替循环滚动:我选的两个背景图片的宽度都是1024的 ,所以定义了#defineBGIMG_WIDTH1024

代码如下:

在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

运行结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。