MenuItem в настоящее время не способны реагировать на «прикосновение началось», и жестко запрограммированы, чтобы реагировать только на «конец касания».
В Menu.m, начиная со строки 105, вы увидите объявление ccTouchesBegan.
Если вы хотите изменить текущее поведение Menu, вы можете создать его подкласс следующим образом:
@interface MenuDown: Menu
{
}
@end
@implementation MenuDown
-(BOOL)ccTouchesBegan:(UITouch *)touches withEvent:(UIEvent *)event {
[self ccTouchesBegan:touches withEvent: event];
if(item) { [item unselected]; [item activate]; }
}
@end
Это не проверено, но в основном ... Я просто взял некоторый код из Menu.m в ccTouchesEnded и скопировал его в переопределенную версию ccTouchesBegan для нового класса MenuDown.
Затем вы определяете свое меню как:
MenuDown *menu = [MenuDown menuWithItems: image, nil];
Этот -должен дать вам ответ "реакция на прикосновение началась" от Cocos2D MenuItem's ...
Однако на самом деле это не рекомендуется ... поскольку я не вижу никакой причины, по которой вы бы хотели, чтобы "кнопка" реагировала на прикосновение, а не на "окончательное действие" ... как оно написано , Меню в настоящее время позволяет пользователю нажать вниз, а затем сдвинуть ..., чтобы отменить действие выбора меню.
Menu / MenuItem не предназначены для использования в качестве «реагирующих на прикосновения объектов» (т. Е. Реальных игровых объектов), если это, по какой-либо причине, то, что вы пытаетесь сделать.