2014-06-24 22 views
0

// Player.m爲 '球員' 不可見的@interface聲明選擇 'walkRight'

#import "Player.h" 
@implementation Player 

+(id)player{ 

    Player *player = [Player spriteNodeWithColor:[UIColor brownColor] size:CGSizeMake(32, 32)]; 

    player.name = @"player"; 

    player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:player.size]; 

    return player; 

} 



- (void)walkRight { 

    SKAction *incRight = [SKAction moveByX:10 y:0 duration:0]; 

    [self runAction:incRight]; 

} 


@end 

// MyScene.h

#import "MyScene.h" 
#import "Player.h" 



@implementation MyScene 

-(id)initWithSize:(CGSize)size {  

    if (self = [super initWithSize:size]) { 

     /* Setup your scene here */ 

     self.anchorPoint = CGPointMake(0.5, 0.5); 

     self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0]; 



    SKSpriteNode *ground = [SKSpriteNode spriteNodeWithColor:[UIColor greenColor] size:CGSizeMake(self.frame.size.width, 30)]; 

    ground.position = CGPointMake(0, -self.frame.size.height/2 + ground.frame.size.height/2); 

    ground.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:ground.size]; 

    ground.physicsBody.dynamic = NO; 

    [self addChild:ground]; 



    Player *player = [Player player]; 

    [self addChild:player]; 

} 

return self; 

} 



-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

Player *player = (Player *)[self childNodeWithName:@"player"]; 

[player walkRight]; 



} 



-(void)update:(CFTimeInterval)currentTime { 

/* Called before each frame is rendered */ 

} 



@end 

我是很新的Objective-C 。好吧,我試圖建立上面的代碼,並得到錯誤「沒有可見@界面的'球員'宣佈選擇'walkRight'」 我真的不知道爲什麼。如果有人能幫助我,我將不勝感激。謝謝。

回答

2

確保你已經在Player.h文件中聲明瞭walkRight方法。這應該在您的界面聲明後的某個位置在該文件中:

-(void)walkRight; 

允許導入Player.h的其他文件知道Player.m實現walkRight方法。

+0

非常感謝! – BruceTheGoose

+0

不客氣。如果答案解決了您的問題,請標記爲已接受的答案。 – kleezy

0

更改您的播放器方法返回instancetype而不是id。這將使警告消失。還在Player類的標題(.h)文件中聲明walkRight方法。

+(instancetype)player{ 
    Player *player = [Player spriteNodeWithColor:[UIColor brownColor] size:CGSizeMake(32, 32)]; 

    .... 

    return player; 
} 

瞭解更多關於instancetype herehere

希望有幫助!

相關問題