Cocos2d API 解析之AtlasSpriteTest之二

本文展示了如何使用AtlasSpriteManager进行精灵的缩放、旋转等动作操作,并演示了精灵的水平和垂直翻转功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值