2013-04-30 5 views
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 раза и остановитесь, кнопка станет непригодной.

+0

подсчитывает количество применений, затем if (numUses LearnCocos2D

ответ

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

Таким образом, когда больше не игрок использование кнопка, она отключена и очевидна для них, что они не могут ее использовать