0

这是我的开机按钮:

CCMenuItemImage *bottone = [CCMenuItemImage itemFromNormalImage:@"Icon-72.png" selectedImage:@"Icon-72.png" target:self selector:@selector(bottone)];
bottone.position = ccp(200,-100);

CCMenu *menu = [CCMenu menuWithItems:bottone, nil];
[self addChild:menu];

这是我触摸按钮时的方法:

-(void) bottone

{
    float scaleDuration = 1.0;
    float waitDuration = 5.0;
    _invincible = YES;
    CCParticleSystemQuad *boostEffect = [_boostEffects nextParticleSystem];
    [boostEffect resetSystem];

    [_ship runAction:
     [CCSequence actions:
  //    [CCMoveBy actionWithDuration:scaleDuration position:ccp(winSize.width * 0.6, 0)],
      [CCDelayTime actionWithDuration:waitDuration],
 //     [CCMoveBy actionWithDuration:scaleDuration position:ccp(-winSize.width * 0.6, 0)],
      nil]];

    [self runAction:
     [CCSequence actions:
      //   [CCScaleTo actionWithDuration:scaleDuration scale:0.75],
      [CCDelayTime actionWithDuration:waitDuration],
      [CCScaleTo actionWithDuration:scaleDuration scale:1.0],
      [CCCallFunc actionWithTarget:self selector:@selector(boostDone)],
      nil]];
}

它可以工作,但我希望玩家可以使用 X 次加电。解释得更好,触摸按钮 1 或 2 次并停止,按钮变得无法使用。

4

1 回答 1

1

使您的菜单成为实例变量,然后创建一个计数器来检查它已按照 LearnCocos2D 的建议使用的次数。并定义最大使用次数,即

// In your .h
int _numUses = 0;
CCMenu *menu;

// In your .m
#define kMaxUses 2

然后,您可以通过几种方式处理限制。首先,您可以在按下按钮后检查它是否可用

if(_numUses < kMaxUses) {
    // do use 
} 

我个人不喜欢这种方法,因为它让用户仍然能够在没有任何信息表明它不起作用的情况下按下按钮。然后用户可能会认为游戏中有问题。我要做的是在按钮方法的操作结束时(在增加 _nu​​mUses 之后)禁用按钮。为此,当您创建按钮时,请为其添加标签值,即

CCMenuItemImage *bottone = [CCMenuItemImage itemFromNormalImage:@"Icon-72.png" selectedImage:@"Icon-72.png" target:self selector:@selector(bottone)];
bottone.position = ccp(200,-100);
buttone.tag = 100;

menu = [CCMenu menuWithItems:bottone, nil];
[self addChild:menu];

然后在你的按钮方法的最后,添加这个

_numUses += 1;
if(_numUses > kMaxUses) {
    CCMenuItemImage *buttone = (CCMenuItemImage *)[menu getChildByTag:100];
    [buttone setIsEnabled:NO];
}

这样,当玩家不能再使用按钮时,它就会被禁用并且对他们来说很明显他们不能使用它

于 2013-05-06T07:42:29.090 回答