0

我正在尝试在 cocos2d 中制作游戏。我有他们贬低 ccspritesheet 和所有这些东西之前的版本。我试图让一艘船爆炸。它是一个 ccsprite,我在 - (id)init 中运行此代码

        CCSpriteSheet * sheet = [CCSpriteSheet spriteSheetWithFile:@"Explode.png"];

    [self addChild:sheet];

    NSMutableArray * explosionFrames = [NSMutableArray array];

    int spriteWidth = 256;

    for (int i = 0; i <= 6; i++) {
        [explosionFrames addObject:[CCSprite spriteWithSpriteSheet:sheet rect:CGRectMake(i*spriteWidth, 0, spriteWidth, 100)]];
    }

    CCAnimation * animation = [CCAnimation animationWithName:@"explode" delay:0.1f frames:explosionFrames];

    CCAnimate * explosion = [CCAnimate actionWithDuration:.5f animation:animation restoreOriginalFrame:NO];

    [self runAction:explosion];

当我运行程序时,它会直接崩溃说

-[CCSprite rect]: unrecognized selector sent to instance 0x54484f0

在控制台中。

我不知道是怎么回事。这是我第一次尝试在 cocos 中制作动画,我可能是个白痴。任何帮助几乎和你一样棒。谢谢!

我无法上传即时使用的精灵表,因为我是新手,它不会让我这样做,这是有道理的。但它是 1792 × 100 png

4

1 回答 1

0

已弃用的CCSpriteSheet已被CCSpriteBatchNode取代。但无论如何,要从 spritesheet 的矩形创建一个 sprite,您应该调用 [CCSprite spriteWithTexture:sheet.texture rect:yourRect],其中 sheet 是您的CCSpriteBatchNode

以下代码应该适用于 cocos2d 2.x。有关在 cocos2D 中使用 spritesheets 动画的优秀教程,请查看:http ://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d

    // Create a batchnode from your spritesheet file
    CCSpriteBatchNode *sheet = [CCSpriteBatchNode batchNodeWithFile:@"Explode.png"];
    [self addChild:sheet];

    int spriteWidth = 256;

    // Create the sprite starting with the first frame.
    CCSprite *sprite = [CCSprite spriteWithTexture:sheet.texture rect:CGRectMake(0, 0, spriteWidth, 100)];
    CGSize winSize = [[CCDirector sharedDirector] winSize];
    sprite.position = ccp(winSize.width/2, winSize.height/2);

    // Create the array the holds the animation frames
    NSMutableArray * explosionFrames = [NSMutableArray array];
    for (int i = 0; i <= 6; i++)
    {
        [explosionFrames addObject:[CCSpriteFrame frameWithTexture:sheet.texture rect:CGRectMake(i*spriteWidth, 0, spriteWidth, 100)]];
    }

    // Create the animation from those frames.
    CCAnimation * animation =[CCAnimation animationWithSpriteFrames:explosionFrames delay:.2f];
    CCAnimate * explosion = [CCAnimate actionWithAnimation:animation];

    // Start running the animation
    [sprite runAction:explosion];

    // Add the explosion as child of spritesheet
    [sheet addChild:sprite];
于 2013-02-11T07:00:44.140 回答