这是我的加电按钮:
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次然后停止,按钮变得无法使用。
答案 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];
}
这样当玩家再也无法使用按钮时,它会被禁用并且显而易见,他们无法使用它