cocos2d-x中的特效效果共有22种,包括摇晃,波纹,旋转,透镜等。我们选择其中的一种特效来讲讲它的用法。
首先新建一个项目,命名为EffectTest,然后对文件进行修改。
(注意:我使用的cocos2d-x版本是2.0.4,系统是win7)下载地址
我们修改HelloWorld.cpp文件的init()函数如下:
bool HelloWorld::init()
{
bool bRet = false;
do
{
//
// super init first
//
CC_BREAK_IF(! CCLayer::init());
//
// add your codes below...
//
// 1. Add a menu item with "X" image, which is clicked to quit the program.
// Create a "close" menu item with close icon, it's an auto release object.
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback));
CC_BREAK_IF(! pCloseItem);
// Place the menu item bottom-right conner.
pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));
// Create a menu with the "close" menu item, it's an auto release object.
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
CC_BREAK_IF(! pMenu);
// Add the menu to HelloWorld layer as a child layer.
this->addChild(pMenu, 1);
//获得屏幕大小
CCSize size = CCDirector::sharedDirector()->getWinSize();
//创建一个精灵作为背景,用来显示波动效果
CCSprite* pSprite = CCSprite::create("HelloWorld.png");
CC_BREAK_IF(! pSprite);
pSprite->setPosition(ccp(size.width/2, size.height/2));
//创建一个节点
CCNode* node = CCNode::create();
//创建一个波动特效实例,参数代表:动画波动次数,波动振幅,波动区域大小,波动时间
CCActionInterval* effect = CCWaves3D::create(5, 40, ccg(15,10), 3);
//将背景添加进节点
node->addChild(pSprite);
//执行波动动作
node->runAction(effect);
//将节点添加到布景
addChild(node,0);
bRet = true;
} while (0);
return bRet;
}
我们只实现了波动特效,其他特效的用法一样,只需改变创建特效动画时的特效类名称就可以了。在此就不在赘述。运行程序,结果如下
需要注意的是,程序中我们并没有把右下角的菜单按钮加入到节点,由于运行波动特效的是这个节点,所以右下角的菜单按钮并没有随着特效而波动。我们这里只是简单地实现了一种波动特效,其他的许多更丰富的特效还请大家自己去练习实现。
最后祝愿每一个奋斗在路上的人早日实现梦想!