Создание любого конкретного экземпляра CCNode, реагирующего на прикосновение

Так что в моем проекте я использую Cocos2D с CocosBuilder. Я назначил несколько своих персонажей подклассами CCNode с дочерними CCSprites и т. Д.

Я хочу, чтобы эти CCNodes реагировали на прикосновения - например, если я коснусь любого из них, они будут воспроизводить контекстно-зависимую анимацию. Я только хочу знать, как заставить узел реагировать на касание (или, возможно, слой реагирует на касание, которое определяет, касались ли вы спрайта или нет), с анимацией все в порядке.

Есть идеи? Было бы здорово.

Сэм

1 ответ

Решение

Оказывается, это довольно легко. В заголовочном файле вашего класса вы должны определить класс как реализующий протокол, например так:

@interface Foo : CCNode <CCTouchOneByOneDelegate>
{

}

и вы должны реализовать onEnter и onExit следующим образом:

- (void)onEnter
{
    [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
    [super onEnter];
}
- (void)onExit
{
    [[[CCDirector sharedDirector] touchDispatcher] removeDelegate:self];
[super onExit];
}

и вы должны реализовать ccTouchBegan (если вы используете OneByOneDispatcher)

Другие вопросы по тегам