2012-04-24 18 views
0

ちょっと、エラーメッセージを返すようなコードがありますが、問題の原因がわかりません。私はObjective-cの構文がかなり新しくなっているので、かなりシンプルなものになるかもしれませんが、問題を見つけることができません。 「tileCoordForPosition:」任意の助けをいただければ幸い方法は、それは2行目のエラー無効なイニシャライザを返し、また、私のクラスはに応答しないことを言うCGPointの無効な初期化子

-(void)setPlayerPosition:(CGPoint) position { 
    CGPoint tileCoord = [self tileCoordForPosition:position]; 
    int tileGid = [metaLayer tileGIDAt:tileCoord]; 
    if (tileGid) { 
     NSDictionary *properties = [tileMap propertiesForGID:tileGid]; 
     if (properties) { 
      NSString *collision = [properties valueForKey:@"Collidable"]; 
      if (collision && [collision compare:@"True"] == NSOrderedSame) { 
       return; 
      } 
      NSString *collectable = [properties valueForKey:@"Collectable"]; 
      if (collectable && [collectable compare:@"True"] == NSOrderedSame) { 
       [metaLayer removeTileAt:tileCoord]; 
       [foreground removeTileAt:tileCoord]; 
      } 
     } 
    } 
    player.position = position; 
} 

です!

答えて

0

ヘッダにtileCoordForPosition:を宣言する必要がありますので、コンパイラはそれが返すタイプ(この場合はCGPoint)を認識します。

1

私はそう簡単にそれを自分自身を読んだ後、私の推測では、あなたがいずれかの必要なメソッドが欠落しているか、あなたのクラスでそれを適切に宣言されていないで、あなたがhttp://www.raywenderlich.com/1186/collisions-and-collectables-how-to-make-a-tile-based-game-with-cocos2d-part-2

で記事を以下の通り想定しています。

次の方法が宣言され、

- (CGPoint)tileCoordForPosition:(CGPoint)position 

を実装し、そのメソッドが実装持っている場合、それはあなたが自己

[self tileCoordForPosition:position] 

にそれを呼び出す場所と同じクラスにする必要がありますしている必要があり

あなたのクラスはそれを正しく宣言していることを確認します。あなたの.mファイルの上部に追加してみてください。

関連する問題