如何创建一个带有回调函数的 MenuItemImage 而不是选定的图像?

How to create a MenuItemImage with a callback function in stead of selected image?

我这里有一个 MenuItemImage:

auto myImage = MenuItemImage::create("image.png","image_selected.png",
                         CC_CALLBACK_1(HelloWorld::onImageClicked,this));

它允许我输入 image.png,当我使用键盘在菜单中的项目之间导航时,它会在 selected 上更改为 image_selected.png。但是,我想在select它用myImage->selected();时执行一些操作(不是通过[=31=激活它] 或调用 myImage->activate(); 函数),而不仅仅是无聊的 image_selected.png

现在,我正在考虑在以下位置设置所有这些操作:

keyBoardListener->onKeyPressed = [&](cocos2d::EventKeyboard::KeyCode keycode, Event* event)
    { // Setting up actions on KEY_RIGHT_ARROW or KEY_LEFT_ARROW pressed};

然而这种方式使事情变得复杂。因此,我想问一下是否有任何方法可以将我的所有操作设置为 myImage 正在创建,以便我可以使用简单的 myImage->selected() 调用所有这些操作或使用 [=18 停止它们=] 以后呢? 非常感谢您的关注和帮助 :D

只需这样做:

auto myImage = MenuItemImage::create("image.png", "image_selected.png", [&](Ref* ref){
//your code here
//by ref you can access "myImage" object
});

编辑:

我不确定你想达到什么目的。你想在菜单中有几个按钮,总是选择其中一个并使用箭头更改它们吗? (所以菜单导航就像主机游戏一样)。

编辑2:

看完 yt 示例视频后,我认为仅依靠 MenuItemImage 无法实现此目的。相反,我会创建一个 ui::Button(如果您也需要 clicking/touching)或 Sprite。然后我会自己处理按钮状态。至于发光的框架,您可能需要一些花哨的着色器或在 photoshop 中创建它并为其添加一个不断淡出和淡入的动作。