2011-05-03 3 views
0

내가이 CCSpriteBatchNode를 사용하려면 init 메소드에 ... 플레이어라는 이름의 클래스를 만드는거야 :CCSpriteBatchNode

HelloWorldScene에서 다음
@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; 
} 

나는 애니메이션이 클래스를 사용하려면

Player *pl = [Player node]; 

[self addChild:pl.player]; 

하지만 아무 효과가 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사합니다. . 여기

답변

2

일부 수정

[[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];이 마음에 클래스를 호출하려고 했 전화?