首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

cocos2d 小结:三 CCSprite

2012-09-25 
cocos2d 总结:三 CCSpriteCCSprite?1: CCSpriteBatchNode?? ???????(可能是多个CCSprite)?CCSpriteBatchNo

cocos2d 总结:三 CCSprite

CCSprite

?

1: CCSpriteBatchNode?? ???????(可能是多个CCSprite)

?

CCSpriteBatchNode* batch = [CCSpriteBatchNode batchNodeWithFile:@"bullet.png"];

?

CCArray* bullets = [batch? children];

?

2:用多个单独的文件创建动画 CCAnimation, CCSpriteFrame

?

?

+(CCAnimation*) animationWithFile:(NSString*)name frameCount:(int)frameCount delay:(float)delay

{

??? // load the animation frames as textures and create the sprite frames

??? NSMutableArray* frames = [NSMutableArray arrayWithCapacity:frameCount];

??? for (int i = 0; i < frameCount; i++)

??? {

?????? // Assuming all animation files are named "nameX.png" with X being a consecutive number starting with 0.

?????? NSString* file = [NSString stringWithFormat:@"%@%i.png", name, i];

?????? CCTexture2D* texture = [[CCTextureCache sharedTextureCache] addImage:file];

?

?????? // Assuming that image file animations always use the whole image for each animation frame.

?????? CGSize texSize = texture.contentSize;

?????? CGRect texRect = CGRectMake(0, 0, texSize.width, texSize.height);

?????? CCSpriteFrame* frame = [CCSpriteFrame frameWithTexture:texture rect:texRect offset:CGPointZero];

??????

?????? [frames addObject:frame];

??? }

???

??? // create an animation object from all the sprite animation frames

??? return [CCAnimation animationWithName:name delay:delay frames:frames];

}

?

//调用方式

CCAnimate* animate = [CCAnimate

actionWithAnimation:[self animationWithFile:@"ship-anim" //图片文件

frameCount:5 //帧数

delay:0.08f]//持续时间

];

?

3:从*.plist 文件创建动画

?

1)// Creates an animation from single files.

?

?

-(id) initWithShipImage

{

??? // Load the Texture Atlas sprite frames, this also loads the Texture with the same name.

??? CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];

??? [frameCache addSpriteFramesWithFile:@"ship-and-bullet.plist"];

?

??? // Loading the Ship's sprite using a sprite frame name (eg the filename)

??? if ((self = [super initWithSpriteFrameName:@"ship.png"]))

??? {

?????? // load the ship's animation frames as textures and create a sprite frame

?????? NSMutableArray* frames = [NSMutableArray arrayWithCapacity:5];

?????? for (int i = 0; i < 5; i++)

?????? {

?????????? NSString* file = [NSString stringWithFormat:@"ship-anim%i.png", i];

?????????? CCSpriteFrame* frame = [frameCache spriteFrameByName:file];

?????????? [frames addObject:frame];

?????? }

??????

?????? // create an animation object from all the sprite animation frames

?????? CCAnimation* anim = [CCAnimation animationWithName:@"move" delay:0.08f frames:frames];

??????

?????? // add the animation to the sprite (optional)

?????? //[self addAnimation:anim];

??????

?????? // run the animation by using the CCAnimate action

?????? CCAnimate* animate = [CCAnimate actionWithAnimation:anim];

?????? CCRepeatForever* repeat = [CCRepeatForever actionWithAction:animate];

??? ?? [self runAction:repeat];

??????

??????

?????? [self scheduleUpdate];

??? }

??? return self;

}

?

// Creates an animation from single files.

+(CCAnimation*) animationWithFile:(NSString*)name frameCount:(int)frameCount delay:(float)delay

{

??? // load the animation frames as textures and create the sprite frames

??? NSMutableArray* frames = [NSMutableArray arrayWithCapacity:frameCount];

??? for (int i = 0; i < frameCount; i++)

??? {

?????? // Assuming all animation files are named "nameX.png" with X being a consecutive number starting with 0.

?????? NSString* file = [NSString stringWithFormat:@"%@%i.png", name, i];

?????? CCTexture2D* texture = [[CCTextureCache sharedTextureCache] addImage:file];

?

?????? // Assuming that image file animations always use the whole image for each animation frame.

?????? CGSize texSize = texture.contentSize;

?????? CGRect texRect = CGRectMake(0, 0, texSize.width, texSize.height);

?????? CCSpriteFrame* frame = [CCSpriteFrame frameWithTexture:texture rect:texRect offset:CGPointZero];

??????

?????? [frames addObject:frame];

??? }

???

??? // create an animation object from all the sprite animation frames

??? return [CCAnimation animationWithName:name delay:delay frames:frames];

}

?

?

2) Creates an animation from sprite frames.

?

-(id) initWithShipImage

{

??? // Load the Texture Atlas sprite frames, this also loads the Texture with the same name.

??? CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];

??? [frameCache addSpriteFramesWithFile:@"ship-and-bullet.plist"];

?

??? // Loading the Ship's sprite using a sprite frame name (eg the filename)

??? if ((self = [super initWithSpriteFrameName:@"ship.png"]))

??? {

?????? // create an animation object from all the sprite animation frames

?????? CCAnimation* anim = [CCAnimation animationWithFrame:@"ship-anim" frameCount:5 delay:0.08f];

??????

?????? // add the animation to the sprite (optional)

?????? //[self addAnimation:anim];

??????

?????? // run the animation by using the CCAnimate action

?????? CCAnimate* animate = [CCAnimate actionWithAnimation:anim];

?????? CCRepeatForever* repeat = [CCRepeatForever actionWithAction:animate];

?????? [self runAction:repeat];

??????

??????

?????? [self scheduleUpdate];

??? }

??? return self;

}

?

?

// Creates an animation from sprite frames.

+(CCAnimation*) animationWithFrame:(NSString*)frame frameCount:(int)frameCount delay:(float)delay

{

??? // load the ship's animation frames as textures and create a sprite frame

??? NSMutableArray* frames = [NSMutableArray arrayWithCapacity:frameCount];

??? for (int i = 0;

热点排行