Cocos2d x 如何使用回调函数而不是所选图像创建MenuItemImage?

Cocos2d x 如何使用回调函数而不是所选图像创建MenuItemImage?,cocos2d-x,Cocos2d X,我这里有一个菜单图像: auto myImage = MenuItemImage::create("image.png","image_selected.png", CC_CALLBACK_1(HelloWorld::onImageClicked,this)); 它允许我输入一个image.png,当我使用键盘在菜单中的项目之间导航时,它将被更改为image\u selected.png。但是,我想在使用myImage->selected()选

我这里有一个菜单图像:

auto myImage = MenuItemImage::create("image.png","image_selected.png",
                         CC_CALLBACK_1(HelloWorld::onImageClicked,this));
它允许我输入一个
image.png
,当我使用键盘在菜单中的项目之间导航时,它将被更改为
image\u selected.png
。但是,我想在使用
myImage->selected()选择它时执行一些操作
通过单击/触摸或调用myImage->activate();函数来激活它),而不仅仅是一个无聊的
图像

现在,我正在考虑在以下方面建立所有这些行动:

keyBoardListener->onKeyPressed = [&](cocos2d::EventKeyboard::KeyCode keycode, Event* event)
    { // Setting up actions on KEY_RIGHT_ARROW or KEY_LEFT_ARROW pressed};
然而,这种方式使事情变得复杂。因此,我想问是否有任何方法可以将我的所有操作设置为正在创建的
myImage
,这样我就可以用一个简单的
myImage->selected()
调用所有这些操作,或者稍后用
myImage->unselected()
停止它们? 非常感谢您的关注和帮助:只需执行以下操作:

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::按钮(如果您还需要单击/触摸)或精灵。然后我自己处理按钮状态。至于发光框架,你可能需要一些奇特的着色器,或者在photoshop中创建它,并在其中添加一个不断淡出淡入的动作。

Hi@Makalele,谢谢你的回复。但是,我试图通过调用函数
myImage->selected()
对myImage selected执行操作(在本例中使用键盘侦听器)。上面的lambda只有在我通过触摸/点击或调用函数
myImage->activate()
激活它时才起作用。在上面的代码中,如果我调用函数myImage->selected(),它只显示
image\u selected.png
image。你明白我的意思了。更具体地说,我尝试在1m处制作一个类似于此视频的菜单:
https://www.youtube.com/watch?v=PJSlvhDbB4I&feature=youtu.be&t=1m
。正如你所注意到的,在这个项目周围有一条发光的蓝线,我正在尝试这样做。现在让我们假设,我使用上面的代码来实现这一点,我想添加一个回调函数,在选择一个项目时(使用
myImage->selected()
)执行这些发光的操作,而不是仅仅显示
image\u selected.png
。lambda将用于在使用myImage->activated()激活时打开应用程序。