Cocos2d-x 3.X里的坑(1)——标签菜单项MenuItemLabel和精灵菜单项MenuItemSprite回调不响应

原创 2015年11月20日 18:10:31

打算把自己碰到的各种坑纪录下来。一则以便将来忆苦思甜(哈哈),二则也希望能帮助到那些同样在坑里摸爬滚打的朋友们。

先看一下下面的代码,它的目的是设置一个标签菜单:

        auto home=Label::createWithTTF("home", "fonts/arial.ttf", 40);
        home->setPosition(origin.x+visibleSize.width*0.11, origin.y+bgheight*0.03);
        auto homeItem=MenuItemLabel::create(home, [=](Ref*pSender){log("response");});
        auto menu = Menu::create(homeItem, NULL);
        menu->setPosition(Vec2::ZERO);
        this->addChild(menu);
看起来是不是无懈可击呀。确实,编译和运行都没有问题。只是按下home菜单项毫无反应。为了挖出这个坑,着实花了不少功夫,刚开始还怀疑是自己的引擎版本有问题。后来经过和示例代码的反复对照,终于发现问题出在第一个setPosition上。一旦对Label直接调用setPosition,这个Label就死了(为什么会死呢?尚未搞明白,还望各位网友赐教)。所以解决方法就是改成对MenuItemLabel调用setPosition。同样的,对精灵菜单项MenuItemSprite这个问题也存在。

这里还要顺便提一下菜单的坐标系统。它有点变态,跟其他节点的坐标系统不太一样。对于一般的节点,子节点的默认锚点是中心,默认坐标(即原点)在父节点的左下角。但是菜单默认锚点和坐标不同。菜单项MenuItem的默认锚点还是在中心,默认坐标在父节点(即菜单Menu)的左下角。然而菜单Menu的默认锚点是左下角,默认坐标在父节点的中心,正好反过来。(其实还可以这样认为:菜单项MenuItem的默认锚点是中心,默认坐标在菜单Menu的中心,而菜单Menu的锚点是中心,默认坐标是父节点的中心。)之所以如此设置,大概是为了在默认情况下,菜单项可以显示在屏幕的中心吧。否则就要跑到屏幕外面去了。

Cocos2d-JS中的文本菜单

文本菜单是菜单项只能显示文本,文本菜单类包括了cc.MenuItemLabel、cc.MenuItemFont和cc.MenuItemAtlasFont。cc.MenuItemLabel是个抽象类,具...
  • tonny_guan
  • tonny_guan
  • 2015年03月23日 10:11
  • 4844

MenuItemLabel

#ifndef __CocoStudioAllKeyPoint__ThreeLayer__ #define __CocoStudioAllKeyPoint__ThreeLayer__ #i...
  • zy_Iyear
  • zy_Iyear
  • 2014年09月17日 09:32
  • 634

实例介绍Cocos2d-x精灵菜单和图片菜单

精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage。由于MenuItemImage继承于MenuItemSprite,所以图片菜单也属于精灵菜单。为什么叫精灵菜单呢?那是...
  • tonny_guan
  • tonny_guan
  • 2014年05月12日 12:06
  • 9383

点击按钮(Button、MenuItemSprite)

1、Button var button = this._button = new ccui.Button(); button.setTouchEnabled(true); button.loadTex...
  • lianghui0811
  • lianghui0811
  • 2017年08月05日 10:08
  • 289

cocos2dx 3.X 中 Menu, MenuItem 注意事项

cocos2dx 3.X 中 Menu, MenuItem 注意事项
  • yOung_One
  • yOung_One
  • 2014年11月22日 12:11
  • 3352

cocos2dx-CCMenu菜单

声  明        本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时...
  • jianpengxuexikaifa
  • jianpengxuexikaifa
  • 2014年07月03日 12:06
  • 3532

cocos2dx 3.12 Windows模拟器显示菜单栏

最近用了最新版本的cocos2dx 3.12,发觉运行windows模拟器时,窗口标题栏下方的菜单栏不见了。记得原先通过菜单栏可以快速切换不同分辨率,决定想办法把菜单栏显示出来。 1.把ide-su...
  • Fllay0108
  • Fllay0108
  • 2016年08月28日 23:40
  • 1148

cocos2dx-3.0(11)------Menu与他的小弟MenuItems的故事

先看看Menu的ji'cheng
  • AC_huang
  • AC_huang
  • 2014年06月04日 23:29
  • 2854

Cocos2d-x 3.X里的坑(1)——标签菜单项MenuItemLabel和精灵菜单项MenuItemSprite回调不响应

打算把自己碰到的各种坑纪录下来。一则以便将来忆苦思甜(哈哈),二则也希望能帮助那些同样在坑里摸爬滚打的朋友们。 先看一下下面的代码,它的目的是设置一个标签菜单: auto home=L...
  • u014078216
  • u014078216
  • 2015年11月20日 18:10
  • 1324

Cocos2dx之文字菜单和图片菜单的使用

菜单的显示有两种,一种是文字,另一种是图片,不过基本都是用图片的方式来显示,用户体验比较好 上实例 //创建文字,参数(显示内容,字体,大小) CCLabelTTF* stopLabel = C...
  • yangxuan0261
  • yangxuan0261
  • 2014年03月05日 22:37
  • 1093
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2d-x 3.X里的坑(1)——标签菜单项MenuItemLabel和精灵菜单项MenuItemSprite回调不响应
举报原因:
原因补充:

(最多只允许输入30个字)