在cocos2d上剪切精灵表以获取动画效果

时间:2013-09-13 21:07:27

标签: iphone sdk cocos2d-iphone

嗨我想用6个等效的部分剪切一个精灵只有一个图像,一个.png文件,我在网上找到,没有纹理包装,(下面的例子中的图像)

我可以采取其他方式,但我想知道我是否可以这样做。任何人都有想法? enter image description here

1 个答案:

答案 0 :(得分:0)

如果这不是你要问的问题,我会修改我的答案,但我想你是在问如何使用没有plist的spritesheet'手动运行动画'。 这是一种方式。如果你将它封装到它自己的类中会更好,但是这可以推动你朝着正确的方向发展:

ManualAnimationTest.h

@interface ManualAnimationTest : CCLayer
{
    CCSprite *animatedSprite;
    int x,y;
    float animatedSpriteWidth, animatedSpriteHeight;
    int animatedSpriteColumns, animatedSpriteRows;
}
@end

ManualAnimationTest.m

#import "ManualAnimationTest.h"

@implementation ManualAnimationTest
-(id) init
{
    if( (self=[super init]))
    {
        CGSize s = [CCDirector sharedDirector].winSize;
        x = 0;
        y = 0;

        animatedSpriteColumns = 3;
        animatedSpriteRows = 2;
        animatedSpriteWidth = 95.0f;
        animatedSpriteHeight = 125.0f;

        animatedSprite = [CCSprite spriteWithFile:@"animal_animation.png" rect:CGRectMake(x * animatedSpriteWidth,y * animatedSpriteHeight,animatedSpriteWidth,animatedSpriteHeight)];

        [self addChild:animatedSprite];
        [animatedSprite setPosition:ccp(s.width / 2.0f, s.height / 2.0f)];
        [self schedule:@selector(animateAnimatedSprite) interval:0.5f];
    }
    return self;
}

-(void) animateAnimatedSprite
{
    [animatedSprite setTextureRect:CGRectMake(x * animatedSpriteWidth, y * animatedSpriteHeight, animatedSpriteWidth, animatedSpriteHeight)];
    x +=1;
    if(x > (animatedSpriteColumns - 1))
    {
        x = 0;
        y +=1;
    }

    if(y > (animatedSpriteRows - 1))
    {
        y = 0;
    }
}


@end