cocos2dx 菜单制作+弹性弹出特效

来源:互联网 发布:linux怎么ping 编辑:程序博客网 时间:2024/05/17 02:28
不管是做游戏还是做应用我们都避免不了要做一个东西,就是菜单,那么在cocos2dx中我们怎样来制作菜单呢,下面详细讲讲。ps.虽然cocos2dx做应用也没什么大问题,但是游戏引擎默认每一帧都会重绘,这个对于一般app还是消耗比较大的,所以做应用的时候还是尽量不要使用~

首先我们还是来看看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
里面添加需要响应的内容即可~

对于菜单还有很多特效~大家可以自己多多尝试~原理就是给item或menu添加action~

0 0