2012-06-25 3 views
0

На самом деле мне нужно переместить свой спрайт до тех пор, пока нажимается кнопка, и спрайт должен быть остановлен при отпускании кнопки.Cocos2d-iphone: кнопка ручки Нажмите и отпустите

Мой код ниже:

CCMenuItemFont *item1 = [CCMenuItemFont itemFromString: @"icon.png" target:self selector:@selector(doit)]; 
     CCMenu * taskMenu = [CCMenu menuWithItems:item1, nil]; 
     [self addChild:taskMenu]; 

-void()doit 
{ 
     spritevelocity = 80; 
} 

Приведенный выше код делает мой спрайт продолжать движение, когда кнопка прослушиваются, но мне нужно, чтобы остановить мой спрайт, как только кнопка отпущена.

Я попытался ниже код, но без успеха:

-void()doit 
{ 
    buttonpressed = YES; 
    if (buttonpressed) { 
     spritevelocity = 80; 
    } 
} 

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
     buttonpressed = NO; 
} 

Примечание: Я просто хотел сделать spritevelocity = 0, чтобы остановить мой спрайт ,, То есть я хочу spritevelocity = 0, когда кнопка отпущена

+0

Код, который вы отправили, не компилируется. –

+0

Его просто пример james – vishnu

+0

Как мы можем работать с примером, который не работает. –

ответ

1

Вам необходимо подклассифицировать CCMenuItem в случае переопределения методов selected, unselected и activate. там, вы можете заставить кнопку действовать так, как вы хотите. В этом случае действуйте не только на печать, но и на выпуск. Вот хороший пример переопределения CCMenu: http://johnehartzog.com/2009/10/easy-to-create-buttons-with-cocos2d/

+0

hello sentinel ,, моя кнопка прекрасно работает ... но спрайт продолжает двигаться, когда кнопка нажата. Это не останавливается даже после релиза, я хочу остановиться, когда кнопка освобождена – vishnu

+0

, чтобы сделать это, вам нужно поймать кнопку release момент. для этого вам нужна кнопка подкласса. – SentineL

+0

спасибо, позвольте мне проверить это – vishnu

0

Почему вы не задаете скорость напрямую?

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    buttonpressed = NO; 
    spritevelocity = 0; 
} 

Не могли бы вы объяснить, когда doIt называется?

+0

Да, я пробовал, но он работает, когда я касаюсь где-то еще на экране, но не тогда, когда я нажимаю и отпускаю кнопку CCMenu. – vishnu

+0

check CCMenuItemFont * item1 = [CCMenuItemFont itemFromString: @ "icon.png" target: self selector: @selector (doit)]; ,, – vishnu

+0

Я наблюдал за этим, извините ... Я думаю, что @SentineL дал вам правильный ответ ... вам нужно переопределить стандартное поведение кнопок cocos2d для обработки события touchUp ... – sergio

Смежные вопросы