问下Menu和MenuItemImage之间的关系

helloWorld案例,里先创建了MenuItemImage,然后又创建了Menu并且其参数是MenuItemImage*
-----auto closeItem = MenuItemImage::create(
“CloseNormal.png”,
“CloseSelected.png”,
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
-----auto menu = Menu::create(closeItem, NULL);

我试着去掉Menu的创建直接this->addChild(MenuItemImage*, 1)

然后图片是显示出来了,但是却没有了按键响应功能,是不是一定要用Menu把MenuItemImage包起来
如果有MII1,MII2,MII3那么我需要auto menu = Menu::create(MII1,MII2,MII3, NULL);
才能正常使用这3个BUTTON?

用法上,MenuItemImage 是一个菜单项(MenuItem),把菜单项加在菜单 (Menu 对象) ,才是菜单。
能直接 addChild 是因为 MenuItemImage 是 Node 的子类,是 Node 都能 addChild。
为什么没按键响应功能,可能是事件接收是 Menu 对象处理的,然后调 MenuItem 设置好的回调函数,可以看看源码

问个问题是不是创建所有MenuItem子类对象比如MenuItemImage、Lable、Sprite、Toggle都要将它们放在Menu里面

比如我想做一个5*5背包,也就是我可以先创建25个MenuItemImage1~25
然后auto menu = Menu::create(MenuItemImage1, … ,MenuItemImage25, NULL); ?

    /** 
     * Creates a Menu with a Array of MenuItem objects.
     * @js NA
     */
    static Menu* createWithArray(const Vector<MenuItem*>& arrayOfItems);

Menu 有这个方法,不需要那么耿直的写 25 个。至于背包的实现,不太清楚

原来如此

:9: