0

嘿,我有一些代码不断返回错误消息,但我无法弄清楚问题是什么。我对 Objective-c 语法相当陌生,所以它可能相当简单,但我似乎找不到问题所在。方法是

-(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;
}

它返回错误 Invalid initializer for the 2nd line 并且还说我的班级可能不会响应 'tileCoordForPosition:' 任何帮助将不胜感激!

4

2 回答 2

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尝试像这样将它添加到文件的顶部

@interface YourControllerNameHere()

- (CGPoint)tileCoordForPosition:(CGPoint)position;

@end
于 2012-04-24T00:09:07.927 回答
0

您需要tileCoordForPosition:在标头中声明,以便编译器知道它返回的类型(在本例中为 CGPoint)。

于 2012-04-24T00:05:23.990 回答