Прикоснуться в cocos2d? - PullRequest
0 голосов
/ 21 мая 2009

Cocos2d вопрос ??

Как изменить тип касания? Смотри ниже

image = [MenuItemImage itemFromNormalImage:@"image1.png" selectedImage:@"image2.png" target:self selector:@selector(step1:)];
    Menu *menu = [Menu menuWithItems:image, nil];
    image.position = cpv( -135, -185);
    [self addChild: menu z:2]

step1 - это пустота, определенная для того, чтобы что-то сделать позже в коде. Моя проблема не в том, что step1 не работает, моя проблема в том, что step1 выполняется, когда пользователь касается кнопки внутри. Я хотел бы, чтобы это работало, когда пользователь касается внутренней кнопки. Спасибо за помощь!

1 Ответ

1 голос
/ 30 мая 2009

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 не предназначены для использования в качестве «реагирующих на прикосновения объектов» (т. Е. Реальных игровых объектов), если это, по какой-либо причине, то, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...