拖尾效果是指在在游戏中,一个精灵在运动的过程中会留下一个短暂的轨迹效果,在游戏里面如打斗的特效往往会需要用到这种效果来给运动的增加绚丽的效果。那么在Cocos2D-x里面我们可以使用一种内置的拖动渐隐效果类CCMotionStreak来帮助我们实现这个效果。
头文件:
#include <CCMotionStreak.h>
继承关系图:
![](http://cocos2d.cocoachina.com/cocos2d-x_doc_html/d9/d38/classcocos2d_1_1_c_c_motion_streak.png)
CCMotionStreak类的常用函数如下所示:
initWithFade 第一个参数是间隐的时间,第二个参数是间隐片断的大小,第三个参数是贴图的宽高,第四个参数是颜色值RGB,第五个参数是贴图的路径或者贴图对象
tintWithColor 定义闪烁颜色
setFastMode 置为快速模式,快速模式中,新的点的增加会更快,但是精度会降低 isFastMode 布尔型 返回是否是快速模式
示例代码:
//在init方法里面初始化当前的实例 bool HelloWorld::init() { bool bRet = false; do { //CCLayer进行初始化,初始化失败跳出循环 if ( !CCLayer::init() ) { break; } //获取手机屏幕的大小 CCSize size = CCDirector::sharedDirector()->getWinSize(); //接收界面的的触摸事件 setTouchEnabled(true); // 创建转动的对象 m_root = CCSprite::create("cat.png"); addChild(m_root, 1); m_root->setPosition( CCPointMake(size.width/2, size.height/2) ); //在转动的对象上面再创建一个拖尾效果的跟踪对象 m_target = CCSprite::create("cat.png"); m_root->addChild(m_target); m_target->setPosition( CCPointMake(100,0) ); //创建拖尾效果并且添加到屏幕 m_streak = CCMotionStreak::streakWithFade(2, 3, "cat.png", 32, 32, ccc4(0,255,0,255) ); addChild( m_streak ); //创建帧的更新处理方法来处理拖尾效果 schedule(schedule_selector(HelloWorld::onUpdate)); //创建运动的动作 CCActionInterval* a1 = CCRotateBy::create(2, 360); CCAction* action1 = CCRepeatForever::create(a1); CCActionInterval* motion = CCMoveBy::create(2, CCPointMake(100,0) ); m_root->runAction( CCRepeatForever::create((CCActionInterval*)(CCSequence::create(motion, motion->reverse(), NULL)) ) ); m_root->runAction( action1 ); bRet = true; } while (0); //返回成功 return bRet; } void HelloWorld::onUpdate(ccTime delta) { m_streak->setPosition( m_target->convertToWorldSpace(CCPointZero) ); }