一次触摸后无效按钮

时间:2013-04-30 13:47:49

标签: button cocos2d-iphone

这是我的加电按钮:

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次然后停止,按钮变得无法使用。

1 个答案:

答案 0 :(得分:1)

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

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

// In your .m
#define kMaxUses 2

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

判断它是否可用
if(_numUses < kMaxUses) {
    // do use 
} 

我个人不喜欢这种方法,因为它让用户仍然能够按下按钮而没有任何不起作用的信息。然后,用户可以认为游戏中的某些东西被破坏了。我要做的是,在按钮方法的操作结束时(在增加_numUses之后)禁用按钮。为此,在创建按钮时向其添加标记值,即

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

这样当玩家再也无法使用按钮时,它会被禁用并且显而易见,他们无法使用它