我试图用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
在控制台中。
我不知道最近发生了什么。这是我第一次尝试在科科斯制作动画,我可能是个白痴。任何帮助几乎和你一样棒。谢谢!
我无法上传使用的精灵表,因为我是新的,它不会让我,这是有道理的。但它是一个1792×100 png
答案 0 :(得分:0)
已弃用的 CCSpriteSheet 已被 CCSpriteBatchNode 取代。但无论如何要从spritesheet的rect中创建一个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];