我正在创建一个名为Player的类...在初始化方法中,我想使用一个CCSpriteBatchNode:
@interface Player : CCNode {
CCSprite *player;
CCSpriteBatchNode *spriteSheet;
CCAction *walkAction;
int playerSpeed;
int xPos;
int yPos;
}
@property (nonatomic, retain) CCSprite *player;
@property (nonatomic, retain) CCSpriteBatchNode *spriteSheet;
@property (nonatomic, retain) CCAction *walkAction;
@property int playerSpeed;
@property int xPos;
@property int yPos;
-(id)init {
if( (self=[super init] )) {
playerSpeed = 70;
xPos = 160;
yPos = 10;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"bugA.plist"];
spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"bugA.png"];
[player useBatchNode:spriteSheet];
NSMutableArray *walkAnimFrames = [NSMutableArray array];
for (int i = 1; i <= 8 ; ++i) {
[walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bug%d.png", i]]];
}
CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f];
player = [CCSprite spriteWithSpriteFrameName:@"bug1.png"];
walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];
[player runAction:walkAction];
[spriteSheet addChild:player];
}
return self;
}然后在HelloWorldScene中,我想使用这个带有动画的类
Player *pl = [Player node];
[self addChild:pl.player];但是什么都不起作用。我做错了什么?谢谢。
发布于 2011-05-04 21:02:35
下面是经过一些修改的代码
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"bugA.plist"];
spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"bugA.png"];
//add :
[self addChild:spriteSheet];
//instead of :
[player useBatchNode:spriteSheet];
NSMutableArray *walkAnimFrames = [NSMutableArray array];
for (int i = 1; i <= 8 ; ++i) {
[walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bug%d.png", i]]];
}
CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f];
player = [CCSprite spriteWithSpriteFrameName:@"bug1.png"];
//add to show the player in the middle of the screen
CGSize winSize = [CCDirector sharedDirector].winSize;
player.position = ccp(winSize.width/2, winSize.height/2);
walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];
[player runAction:walkAction];
[spriteSheet addChild:player];要使用此代码,只需调用
Player *pl = [Player node];
[self addChild:pl];你有没有试着把你的类叫做[self addChild:pl];而不是[self addChild:pl.player];?
https://stackoverflow.com/questions/5867881
复制相似问题