【问题标题】:cocos2d: change CCMenuItemImage when mouse passes over?cocos2d:鼠标经过时改变CCMenuItemImage?
【发布时间】:2013-01-17 23:32:07
【问题描述】:

有没有人知道当鼠标经过 CCMenuItem 时有一种简单的动画方法。

我已阅读此主题:

Cocos2d CCMenuItem animation upon selection

这似乎涵盖了 Cocoa Touch,但不适用于 OS X。

cocos2d参考列出了CCMenuItemImage的这个方法:我是这样用的:

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

但是,当鼠标经过时,该菜单项不会通过更改图像来响应,只有在单击时才会响应。

CCMenuItem 引用有这个方法:

  • (void) selected,说明“该项目已选择(未激活),类似于“鼠标悬停””

但没有示例代码...

谁能帮忙实现这个?

谢谢

【问题讨论】:

  • CCMenu 真的没有那么灵活。您通常最好创建自己的动画按钮类,而不是破解 CCMenu 的代码。
  • 你能简要地描述一下如何做到这一点吗?

标签: cocos2d-iphone mouseover ccmenuitem ccmenu


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多