不兼容的指针类型将“class”发送到CCMenuItem类型的参数

时间:2013-07-18 01:18:22

标签: iphone objective-c cocos2d-iphone kobold2d

我正在制作一个14岁的孩子在cocos2d中制作游戏。我对cocos2d很新。我想在彼此旁边显示相同的硬币精灵来制作图案。

所以我在我的主要游戏层中添加了这个:

- (void)coinPatterns {    
    menu = [CCMenu menuWithItems:[Coins class], [Coins class], self, nil];
    [menu alignItemsHorizontally];
    [self addChild:menu];
}

这就是我初始化菜单的方式:

[[GameMechanics sharedGameMechanics] setSpawnRate:50 forMonsterType:menu];

这就是我的硬币类:

- (id)initWithMonsterPicture
{
    self = [super initWithFile:@"coin.png"];
    if (self)
    {
        CGRect screenRect = [[CCDirector sharedDirector] screenRect];
        CGSize spriteSize = [self contentSize];
        posX =  screenRect.size.width + spriteSize.width * 0.5f;
        posY = 150;
        self.initialHitPoints = 1;
        self.animationFrames = [NSMutableArray array];
        [self scheduleUpdate];
        inAppCurrencyDisplayNode.score = [Store availableAmountInAppCurrency];
    }
    coinValue = 3;
    return self;
}
- (void)spawn
{
    self.position = CGPointMake(posX, posY);
    self.visible = YES;
}
- (void)gotCollected {
    self.visible = FALSE;
    self.position = ccp(-MAX_INT, 0);
    [Store addInAppCurrency:coinValue];
}

我一直在Incompatible pointer types sending 'class' to parameter of type 'CCMenuItem'。有人可以告诉我如何更改代码以便这样做吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

menuWithItems:获取一组CCMenuItem个对象,您自己发送一个类。我不知道班级Coin做了什么,但如果目的是展示图像然后在点击时做点什么我建议你这样做:

CCMenuItem *myCoin1 = [CCMenuItemImage 
  itemFromNormalImage:@"coin.png" selectedImage:@"coinSelected.png" 
  target:self selector:@selector(coin1WasTapped:)];
CCMenuItem *myCoin2 ...
menu = [CCMenu menuWithItems: myCoin1, myCoin2, myCoin3, ..., nil];

你应该创建一个方法coin1WasTapped:,当点击硬币时会调用它,你可以在这里“收集”硬币。也许从menu或动画中删除它们。

如果您要创建许多硬币,我建议您使用for循环在数组中创建它们。这样,以后操作起来会更容易。

这个tutorial非常好,它可以帮助您更好地了解您需要做什么以及如何做。

祝你好运!