我正在使用cocos2d和box2d phisycs开发应用程序。我想让我的精灵动起来。我在Zwoptex中创建了一个* .plist和* .png文件,并将它们添加到我的项目中。现在,我正在尝试创建一个精灵:
[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"SquirrelAnimation.plist"];
node = [CCSpriteBatchNode batchNodeWithFile:@"SquirrelAnimation.png" capacity:100];
spriteTexture = [node texture];
b2BodyDef bodyDef;
bodyDef.type = bodyType;
CGSize size = [CCDirector sharedDirector].winSize;
CGPoint point = ccp(size.width / 2, size.height / 2);
bodyDef.position.Set(point.x / PTM_RATIO, point.y / PTM_RATIO);
body = world->CreateBody(&bodyDef);
sprite = [PhysicsSprite spriteWithTexture:spriteTexture];
[sprite setPhysicsBody:body];
[node addChild:sprite];
但是这段代码会生成一个带有所有帧到节点的精灵。我做错了什么?
答案 0 :(得分:2)
像这样提取帧......
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spritesheet.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"spritesheet.png"];
[self addChild:spriteSheet];
NSMutableArray *frames = [[[NSMutableArray alloc]init]retain];
for(int i = 1; i <= numberFrames; i++) {
[frames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%@0%d.png", file_name, i]]];
}
// Animation object with 0.04 seconds between each frame (~30fps)
CCAnimation *anim = [CCAnimation animationWithFrames:frames delay:0.04f];
if(self.sprite){
// Animate the sprite
[self.sprite runAction:[CCAnimate actionWithAnimation:anim restoreOriginalFrame:NO]];
}