首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到另一个CCMenuItem中的CCMenuItem对触摸没有反应

添加到另一个CCMenuItem中的CCMenuItem对触摸没有反应
EN

Stack Overflow用户
提问于 2013-09-21 16:17:11
回答 1查看 220关注 0票数 0

我正在实现一个装饰器模式,用于将选定的/未选定的事件添加到CCMenuItem继承程序中:

代码语言:javascript
复制
  public class MenuItemDecorator : CCMenuItem
  {
    public event EventHandler OnSelected;
    public event EventHandler OnUnselected;
    private readonly CCMenuItem _menuItem;

    public MenuItemDecorator(CCMenuItem menuItem) //set a decorated item
    {
      menuItem.ThrowIfNull("menuItem");

      _menuItem = menuItem;
      AddChild(_menuItem);
    }

    public override void Selected()
    {
      base.Selected();
      _menuItem.Selected();

      if(OnSelected != null)
        OnSelected(this, null);
    }

    public override void Unselected()
    {
      base.Unselected();
      _menuItem.Unselected();

      if(OnUnselected != null)
        OnUnselected(this, null);
    }
  }

然后我“装饰”我的物品:

代码语言:javascript
复制
...
var soundToggle = MenuItemToggleBuilder.New(soundOffBtn, soundOnBtn)
                                       .SetPosition(positionX, positionY)
                                       .SetTarget(ToggleSelector)
                                       .Build();

var decorToggle = new MenuItemDecorator(soundToggle);
decorToggle.SetTarget(Selector); // for debugging
decorToggle.OnSelected += (s, e) => toggleWafer.Scale = 0.95f;
decorToggle.OnUnselected += (s, e) => toggleWafer.Scale = 1f;

LayerMenu.AddChild(soundToggle, int.MaxValue); //LayerMenu is CCMenu
...

private void Selector(object o)
{//breakpoint is here
}
...

但是,当我启动应用程序并单击我的decorToggle时,它不会响应。此外,它没有进入我的Selector方法(在这里,我已经设置了断点)。

那我做错什么了?能让它变得更简单吗?提前感谢

谢谢,@LearnCocos2D。但是为什么调试器不停止在Selector方法的断点上呢?

问题的第二部分又是怎么回事?我是否可以将自定义行为添加到没有从具体的Selected/Unselected继承程序继承的CCMenuItem继承程序上的CCMenuItem事件中(对不起双关语)并重写Selected/Unselected方法?

CCMenuItemImageWithExtendedSelectCCMenuItemLabelWithExtendedSelectCCMenuItemToggleWithExtendedSelect等,这些类中的每一个都只是覆盖Selected/Unselected方法(如我的MenuItemDecorator中的)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-21 19:26:44

如果CCMenu具有与cocos2d-iphone相同的行为,这是安全的假设,那么CCMenuItem是不可堆叠的。您不能让一个CCMenuItem作为另一个菜单项的子菜单项,并且两者都能对触摸做出正确的反应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18934824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档