2013-02-11 99 views
0

我试图在cocos2d中制作游戏。我有这个版本之前,他们谴责ccspritesheet和所有这些事情。我试图让一艘船爆炸。它的一个ccsprite,我跑在此代码 - (ID)初始动画崩溃程序COCOS2D

 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 

我不知道发生了什么事。这是我第一次试图在科科斯进行动画制作,我可能是一个白痴。任何帮助都和你一样棒。谢谢!

我不能上传精灵表im使用,因为我是新的,它不会让我,这是有道理的。但它的一个1792×100的PNG

+0

的门票线索列车为$ 10上车! – 2013-02-11 06:28:07

回答

0

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

下面的代码应该适用于cocos2d 2.x.有关使用spritesheets在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]; 
+0

你能告诉我我的代码有什么问题吗?我真的很困惑。谢谢回答! – 2013-02-23 03:25:01