1. 程式人生 > >關於Cocos2d-x的動畫動作的記錄

關於Cocos2d-x的動畫動作的記錄

這裡是關於Cocos2d-x遊戲開發學習中的關於精靈動作的程式碼

在這裡記錄,以作備忘。

(沒有添加註釋的動作,即曾經建立過並寫過註釋,所以第二次建立沒寫註釋)

#include "HelloWorldScene.h"


USING_NS_CC;


CCScene* HelloWorld::scene()
{
    // 'scene' is an autorelease object
    CCScene *scene = CCScene::create();
    
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();


    // add layer as a child to scene
    scene->addChild(layer);


    // return the scene
    return scene;
}


// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }


    
//初始化遊戲
// 畫圖
// 1.定義精靈物件並賦值
CCSprite *spBg = CCSprite::create("hall_bj1.png");
// 2.畫到當前層
this->addChild(spBg);
// 3.設定位置
spBg->setPosition(ccp(480/2,854/2));
//建立一個精靈
CCSprite *spHall = CCSprite::create("hall.png");
this->addChild(spHall);
spHall->setPosition(ccp(380, 386));
spHall->setScale(0.5);
////建立一個精靈
//CCSprite *spHall1 = CCSprite::create("hall.png");
//this->addChild(spHall1);
//spHall1->setPosition(ccp(380, 392));
//spHall1->setScale(0.5);
//設定移動動畫--------1
CCMoveBy *MoveY = CCMoveBy::create(1.0f, ccp(0,70));
//設定移動動畫--------1
CCMoveBy *MoveYD = CCMoveBy::create(1.0f, ccp(0, -70));
//設定消失動畫--------1
CCFadeOut *FadeOut = CCFadeOut::create(1.0f);
//設定消失動畫--------2
CCFadeOut *FadeOut1 = CCFadeOut::create(0.1f);
//設定縮放動畫(自身基礎上放大一定比例)--------1
CCScaleTo *ScaleBy = CCScaleTo::create(1.0f, 0.8f);
//設定縮放動畫(自身基礎上縮小一定比例)--------1
CCScaleTo *ScaleBy1 = CCScaleTo::create(1.0f, 0.5f);
//新增特效(漸顯的時間)--------1
CCFadeIn *FadeIn = CCFadeIn::create(0.1f);
//新增特效(漸顯的時間)---------2
CCFadeIn *FadeIn1 = CCFadeIn::create(0.6f);
//延時動作---------2
CCDelayTime *delate = CCDelayTime::create(3.8f);
//水平方向向左轉向180°
CCFlipX *turnleft = CCFlipX::create(false);
//水平方向向右轉向180°
CCFlipX *turnright = CCFlipX::create(true);
//並列動作(向上移動漸漸消失)--------1
CCSpawn *atSpawn = CCSpawn::create(FadeOut,MoveY,ScaleBy, nullptr);
//並列動作(向上移動漸漸消失)---------2
CCSpawn *atSpawn3 = CCSpawn::create(FadeIn1, delate, nullptr);
//並列動作(向上移動漸漸消失)---------2
CCSpawn *atSpawn2 = CCSpawn::create(atSpawn3,FadeOut, MoveY, ScaleBy, nullptr);
//並列動作(向下移動消失狀態)--------1
CCSpawn *atSpawn1 = CCSpawn::create( MoveYD, ScaleBy1, nullptr);
//序列動作(不定長引數,有序動作)--------1
CCSequence *atSe3 = CCSequence::create(FadeOut1,delate, FadeIn1, nullptr);
//序列動作(不定長引數,有序動作)--------1
CCSequence *atSe1 = CCSequence::create(atSpawn, atSpawn1, FadeIn, nullptr);
//第一個精靈的動作--------1
CCRepeatForever *MoveForever = CCRepeatForever::create(atSe1);
spHall->runAction(MoveForever);
//spHall1->runAction(atSpawn3);
//spHall1->runAction(MoveForever);





//建立一個精靈
CCSprite *sppet = CCSprite::create("pet.png");
this->addChild(sppet);
sppet->setPosition(ccp(480 / 2, 380));
sppet->setScale(0.5);
//拋物線運動
//建立CCBezierConfig結構體並且設定終點和兩個控制點
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(180, 580);
bezier.controlPoint_2 = ccp(120, 250);
bezier.endPosition = ccp(120,250);
//建立CCBezierConfig結構體並且設定終點和兩個控制點
ccBezierConfig bezier1;
bezier1.controlPoint_1 = ccp(120, 250);
bezier1.controlPoint_2 = ccp(180, 580);
bezier1.endPosition = ccp(240, 380);
//應用曲線動作例項
CCBezierTo *pl = CCBezierTo::create(1.0f, bezier);
////應用曲線動作例項
CCBezierTo *pr = CCBezierTo::create(1.0f, bezier1);
////建立序列動作向左轉向跳躍
CCSpawn *bezl = CCSpawn::create(turnleft, pl, nullptr);
////建立序列動作向右轉向跳躍
CCSpawn *bezr = CCSpawn::create(turnright, pr, nullptr);
////建立序列動作巡邏
CCSequence *bezr2 = CCSequence::create(bezl, bezr, nullptr);
////建立重複動作
CCRepeatForever *jumpforever = CCRepeatForever::create(bezr2);


sppet->runAction(jumpforever);







    
    return true;
}




void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
    CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
#endif
}

該程式執行情況如下:


左側精靈會按照貝塞爾曲線來回跳躍,右側煙囪裡會持續冒出白煙。