2

有谁知道当鼠标经过 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,说明“该项目被选中(未激活),类似于“鼠标悬停””

但没有示例代码...

任何人都可以帮助实现这一点吗?

谢谢

4

1 回答 1

0

我发现当鼠标经过状态时很容易对状态进行任何CCMenu更改,从而使其具有悬停效果。首先,确保您已设置CCMenuItemselected[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;
}
于 2014-07-01T02:09:59.927 回答