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-x精灵菜单和图片菜单

精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage。由于MenuItemImage继承于MenuItemSprite,所以图片菜单也属于精灵菜单。为什么叫精灵菜单呢?那是...

MenuItemLabel

#ifndef __CocoStudioAllKeyPoint__ThreeLayer__ #define __CocoStudioAllKeyPoint__ThreeLayer__ #i...

Cocos2d-JS中的文本菜单

文本菜单是菜单项只能显示文本,文本菜单类包括了cc.MenuItemLabel、cc.MenuItemFont和cc.MenuItemAtlasFont。cc.MenuItemLabel是个抽象类,具...

【cocos2dx】添加简单的按钮 MenuItemImage

先上效果图:(为啥图片显示不出来?) 在.h文件中添加  void button_touch_test(Object *);  类似的这样的回调函数的声明(自己写的回调函数) 在....

cocos2d-x 回调函数详解

转自:http://blog.csdn.net/zhanglongit/article/details/8550367   cocos2d-x中有大量的回调函数的应用,主要有以下几类,看下CCOb...

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

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

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

精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage。由于MenuItemImage继承于MenuItemSprite,所以图片菜单也属于精灵菜单。为什么叫精灵菜单呢?那是...

vector中erase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.e...

Cocos2d-x初入学堂 --> CCMenuItem菜单项

欢迎转载!转载时请注明出处:http://blog.csdn.net/aa4790139/article/details/8112236 CCMenu这是一个抽象的东西,容纳菜单项CCMenuI...

Cocos2d-x初入学堂(5)-->CCMenuItem菜单项

欢迎转载!转载时请注明出处:http://blog.csdn.net/aa4790139/article/details/8112236 CCMenu这是一个抽象的东西,容纳菜单项CCMenuIte...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2d-x 3.X里的坑(1)——标签菜单项MenuItemLabel和精灵菜单项MenuItemSprite回调不响应
举报原因:
原因补充:

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