2014-07-21 93 views
1

我對編程還很陌生,我試圖做的事情如下:所以我將我的敵人從我的遊戲場景中分離出來,分配給不同的課程。 在Enemy class.m文件中,我聲明瞭6個方法。每種方法代表一個新的水平,將從遊戲場景中調用。 所以在我宣佈精靈的形象,路徑,拍攝顆粒型的方法,等等。 這裏的1級法在EnemyClass.m文件的一個示例:實施我的敵人級別到遊戲場景

+(void)enemiesLevel1 
{ 
EnemyName = @"enemy1"; 
SKSpriteNode* enemy = [SKSpriteNode spriteNodeWithImageNamed:EnemyName]; 
pathSpeed = 3; 
CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(0,0,400,400), NULL); 
SKAction *followTrack = [SKAction followPath:path 
            asOffset:NO 
           orientToPath:YES 
            duration:pathSpeed]; 

SKAction *forever = [SKAction repeatActionForever:followTrack]; 
SKAction *addEnemy = [SKAction runBlock:^{ 
    [GameScene addChild: enemy]; 
}]; 
SKAction *enemySequence = [SKAction sequence:@[addEnemy, forever]]; 

[GameScene runAction: enemySequence]; 
} 

然而,Xcode是說明了兩個問題:

No known class method for selector "addChild" 

No known class method for selector "runAction" 

我從GameScene.m調用方法有:

[EnemyClass enemiesLevel1] 

這可能看起來像一個愚蠢的問題,但我仍然是新的,我將不勝感激任何幫助!

回答

2

問題是,你應該在GameScene中創建EnemyClasss的實例,然後使用它;你的代碼應該像這樣;

在EnemyClass.m:

-(void)enemiesLevel1 
{ 
EnemyName = @"enemy1"; 
SKSpriteNode* enemy = [SKSpriteNode spriteNodeWithImageNamed:EnemyName]; 
pathSpeed = 3; 
CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(0,0,400,400), NULL); 
SKAction *followTrack = [SKAction followPath:path 
            asOffset:NO 
           orientToPath:YES 
            duration:pathSpeed]; 

SKAction *forever = [SKAction repeatActionForever:followTrack]; 
SKAction *addEnemy = [SKAction runBlock:^{ 
    [self addChild: enemy]; 
}]; 

SKAction *enemySequence = [SKAction sequence:@[addEnemy, forever]]; 

[self runAction: enemySequence]; 
} 

在GameScene.m:

EnemyClass *enemy= [[EnemyClass alloc] initWithSize:self.size]; 

,然後你可以使用:

[self addChild: [enemy enemiesLevel1]]; 
+0

是的,你是絕對正確的,我編輯立即張貼,謝謝 –

+0

啊是的。我沒有看到。 – idmean

+0

enemiesLevel1有一個void返回類型。 [self addChild:[enemy enemiesLevel1]]不會編譯,因爲addChild(假定EnemyClass是SKNode的子類)需要類型爲「SKNode *」的參數。 –