拖尾效果是指在在游戲中,一個精靈在運動的過程中會留下一個短暫的軌跡效果,在游戲里面如打斗的特效往往會需要用到這種效果來給運動的增加絢麗的效果。那么在Cocos2D-x里面我們可以使用一種內置的拖動漸隱效果類CCMotionStreak來幫助我們實現這個效果。
頭文件:
#include <CCMotionStreak.h>
繼承關系圖:

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) ); }