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に置き換えられました。とにかく、スプライトシートの rect からスプライトを作成するには、[CCSprite spriteWithTexture:sheet.texture rect:yourRect] を呼び出す必要があります。ここで、 sheet はCCSpriteBatchNodeです。

次のコードは cocos2d 2.x で動作するはずです。cocos2D でスプライトシートを使用したアニメーションに関する優れたチュートリアルについては、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 に答える