如何使用回调函数而不是选定的图像创建MenuItemImage?

时间:2017-03-27 04:37:39

标签: cocos2d-x

我在这里有一个MenuItemImage:

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

它允许我输入image.png,当我使用键盘在菜单中的项目之间导航时,该image_selected.png将更改为myImage->selected();。但是,我想在使用image_selected.png 选择时执行一些操作(通过点击/触摸或调用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()调用所有这些操作,或者使用{{1}停止它们以后? 非常感谢您的关注和帮助:D

1 个答案:

答案 0 :(得分:1)

只需这样做:

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

编辑:

我不确定你想要达到什么目标。你想在菜单中有几个按钮,其中一个按钮被选中并用箭头改变它们吗? (所以菜单导航就像在控制台游戏上一样)。

EDIT2:

在观看了一段视频后,我认为你不能只依靠MenuItemImage实现这一目标。相反,我会创建一个ui :: Button(如果你需要点击/触摸)或Sprite。然后我自己处理按钮状态。至于发光框架你可能需要一些花哨的着色器或在photoshop中创建它并添加一个不断淡出的动作。