首先我们还是来看看cocos引擎自动给我们生成的一个关闭菜单的代码:
auto closeItem = MenuItemImage::create( "CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::menuCloseCallback,this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2,origin.y + closeItem->getContentSize().height/2));
这是创建一个菜单item的代码,在创建菜单item的时候可以使用image也可以使用font,这里是关闭按钮,所以使用了MenuItemImage来进行创建,参数列表的头两个是没按和按下时使用的纹理图片,最后一个参数是一个回调函数,在按下这个item后就会去执行这个函数。然后设置了一下这个item的位置。接下来就要将这个item添加到menu中,看下面这段代码:
auto menu = Menu::create(closeItem,NULL);
调用Menu的create函数创建一个menu*的变量,参数列表里面是这个menu中包含的item,现在我们知道了怎样去创建一个简单的菜单,那么我们来看看怎样添加特效,本文要讲的是一种弹出后又缓冲弹性的特效,cocos中有提供这种类似的action:EaseElasticOut
关于这个类的具体讲解可以参考官方文档:http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/d0/dec/classcocos2d_1_1_ease_elastic_out.html
那么我们来创建一个带特效的菜单:
首先还是先创建一个item:
auto testItem = MenuItemImage::create( "testnormal.png","testselected.png",CC_CALLBACK_1(LoadScene::menutestCallback,this)); testItem->setPosition(Vec2(visibleSize.width/2 + origin.x,origin.y));先创建一个item,然后将位置放在屏幕的底部中间(竖屏)
testItem->runAction(EaseElasticOut::create(MoveTo::create(2,Vec2(visibleSize.width/2 + origin.x,visibleSize.height/2 + origin.y)),0.35f));下面来创建这个弹出特效,其实就是让这个item执行一个action,让这个item运动到屏幕中央,到达屏幕中央后执行一个弹性缓冲的动作~so easy~
最后将这个item添加到menu中:
auto menu = Menu::create(testItem,NULL);相关的回调函数:
LoadScene::menutestCallback里面添加需要响应的内容即可~