cocos2d: изменить CCMenuItemImage при наведении мыши?

Кто-нибудь знает простой способ анимировать CCMenuItem, когда мышь проходит над ним?

Я прочитал эту ветку:

Cocos2d CCMenuItem анимация на выбор

который, кажется, покрывает Cocoa Touch, но у меня не работает с OS X.

Ссылка cocos2d перечисляет этот метод CCMenuItemImage: который я использовал следующим образом:

CCMenuItem *beginButtonMenuItem = [CCMenuItemImage itemWithNormalImage:@"BeginButton3.png" 
                                                     selectedImage:@"BeginButtonSel3.png"
                                                            target:self
                                                        selector:@selector(beginButtonPressed:)];

Однако этот пункт меню не реагирует на изменение изображения при наведении курсора мыши, только при нажатии.

ссылка CCMenuItem имеет этот метод:

  • (void) selected с указанием "Элемент выбран (не активирован), аналогично"mouse-over""

но не имеет образца кода...

Кто-нибудь может помочь реализовать это?

Спасибо

1 ответ

Решение

Я нашел это довольно легко сделать CCMenu изменить любой CCMenuItem к selected состояние, когда мышь проходит над ним, давая эффект наведения. Во-первых, убедитесь, что вы установили [window_ setAcceptsMouseMovedEvents:YES];

Затем добавьте эту функцию в CCMenu.m (возможно сразу после ccMouseDragged определение):

- (BOOL) ccMouseMoved:(NSEvent *)event {
  if( ! _visible || ! _enabled)
    return NO;

  CCMenuItem *currentItem = [self itemForMouseEvent:event];
  if(!currentItem) {
    if(_highlightedItem != _selectedItem) {
      [_highlightedItem unselected];
    }
    [_highlightedItem release];
    _highlightedItem = nil;
    return NO;
  }

  if (currentItem != _highlightedItem) {
    [_highlightedItem unselected];
    _highlightedItem = currentItem;
    [_highlightedItem retain];
    [_highlightedItem selected];
  }

  return YES;
}
Другие вопросы по тегам