0

我正在让一个 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'. 有人可以告诉我应该如何更改代码以使其正常工作吗?

谢谢!

4

1 回答 1

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循环将它们全部创建在一个数组中。这样以后操作起来会更容易。

这个教程真的很好,它可以帮助你更好地理解你需要做什么以及如何去做。

祝你好运!

于 2013-07-18T01:31:14.290 回答