例子6:(展示AtlasSpriteManager这个集合的action动作情况)
@implementation Atlas6
-(id) init
{
if( (self=[super init]) ) {
// small capacity. Testing resizing
// Don't use capacity=1 in your real game. It is expensive to resize the capacity
AtlasSpriteManager *mgr = [AtlasSpriteManager spriteManagerWithFile:@"grossini_dance_atlas.png" capacity:1];
[self addChild:mgr z:0 tag:kTagSpriteManager];
CGSize s = [[Director sharedDirector] winSize];
//If YES the transformtions will be relative to it's anchor point.
//精灵,标签和任何其他sizeble对象使用它有它默认情况下启用
//场景,层和其他“整个屏幕”对象不使用它,有它默认被禁用。
mgr.relativeAnchorPoint = NO;
mgr.anchorPoint = ccp(0.5f, 0.5f); //为中心点
mgr.contentSize = CGSizeMake(s.width, s.height); //设置内容的宽度和高度为整个屏
// AtlasSprite actions
id rotate = [RotateBy actionWithDuration:5 angle:360];
id action = [RepeatForever actionWithAction:rotate];
// AtlasSpriteManager actions
id rotate_back = [rotate reverse];
id rotate_seq = [Sequence actions:rotate, rotate_back, nil];
id rotate_forever = [RepeatForever actionWithAction:rotate_seq];
id scale = [ScaleBy actionWithDuration:5 scale:1.5f];
id scale_back = [scale reverse];
id scale_seq = [Sequence actions: scale, scale_back, nil];
id scale_forever = [RepeatForever actionWithAction:scale_seq];
for(int i=0;i<3;i++) {
AtlasSprite *sprite = [AtlasSprite spriteWithRect:CGRectMake(85*i, 121*1, 85, 121) spriteManager: mgr];
sprite.position = ccp( 90 + i*150, s.height/2);
[sprite runAction: [[action copy] autorelease]];
[mgr addChild:sprite z:i];
}
[mgr runAction: scale_forever];
[mgr runAction: rotate_forever];
}
return self;
}
-(NSString*) title
{
return @"AtlasSpriteManager transformation";
}
@end
例子7:(展示flipX:是否精灵水平翻转 flixY:是否精灵垂直翻转,可以用来制作人物运动)
@implementation Atlas7
-(id) init
{
if( (self=[super init]) ) {
AtlasSpriteManager *mgr = [AtlasSpriteManager spriteManagerWithFile:@"grossini_dance_atlas.png" capacity:10];
[self addChild:mgr z:0 tag:kTagSpriteManager];
CGSize s = [[Director sharedDirector] winSize];
AtlasSprite *sprite1 = [AtlasSprite spriteWithRect:CGRectMake(85*1, 121*1, 85, 121) spriteManager: mgr];
sprite1.position = ccp( s.width/2 - 100, s.height/2 );
[mgr addChild:sprite1 z:0 tag:kTagSprite1];
AtlasSprite *sprite2 = [AtlasSprite spriteWithRect:CGRectMake(85*1, 121*1, 85, 121) spriteManager: mgr];
sprite2.position = ccp( s.width/2 + 100, s.height/2 );
[mgr addChild:sprite2 z:0 tag:kTagSprite2];
[self schedule:@selector(flipSprites:) interval:1];
}
return self;
}
-(void) flipSprites:(ccTime)dt
{
id mgr = [self getChildByTag:kTagSpriteManager];
id sprite1 = [mgr getChildByTag:kTagSprite1];
id sprite2 = [mgr getChildByTag:kTagSprite2];
BOOL x = [sprite1 flipX];
BOOL y = [sprite2 flipY];
[sprite1 setFlipX: !x]; //当前状态取反,两种状态不断的切换
[sprite2 setFlipY: !y];
}
-(NSString*) title
{
return @"AtlasSprite Flip X & Y";
}
@end
Cocos2d API 解析之AtlasSpriteTest之二
最新推荐文章于 2024-01-05 22:12:54 发布