Cocos2d-x 3.2 大富翁遊戲項目開發-第二部分區頭動畫,cocos2d-x項目開發

來源:互聯網
上載者:User

Cocos2d-x 3.2 大富翁遊戲項目開發-第二部分區頭動畫,cocos2d-x項目開發

第二部分區頭動畫




首先在visula studio 下建立新工程

工具類ConstUtil.h,該檔案主要定義了一些圖片資源、字串、字型等

#ifndef __CONSTUTIL_H__#define __CONSTUTIL_H__//定義了誠邁科技四張圖片資源,由於在誠邁科技,就用公司名稱做動畫吧#define CHENG_IMAGE   "cheng.png"#define MAI_IMAGE     "mai.png"#define KE_IMAGE      "ke.png"#define JI_IMAGE      "ji.png"#endif


建立SplashScene.cpp和SplashScene.h檔案

在該h檔案中,主要定義了一些方法………………………….const  double MOVE_SPLEED  = 0.5f; //動畫播放速度void moveKeSpriteToLeft();       //定義ke.png 精靈向左移動的方法void moveMaiSpriteToLeft();   //定義mai.png精靈向左移動的方法void initMoveSprite();   //初始化圖片方法void startMoveSprite(float dt);//開始移動方法void gotoMenuScene();//動畫結束後進入MenuScene情境方法void spriteFadeOut();//動畫逐漸消失方法………………………….Sprite* mai_Sprite ;//main.png圖片精靈Sprite* ke_Sprite ;// ke.png圖片精靈Sprite* ji_Sprite;// ji.png圖片精靈Sprite* cheng_Sprite;// cheng.png圖片精靈Size visibleSize;//視窗大小Size spriteSize;//每張圖片的尺寸大小


SplashScene.cpp主要內容如下


bool SplashScene::init(){if ( !Layer::init() )    {        return false;    }visibleSize = Director::getInstance()->getVisibleSize();//初始化視窗尺寸變數Vec2 origin = Director::getInstance()->getVisibleOrigin();initMoveSprite(); //初始化動畫精靈方法scheduleOnce(schedule_selector(SplashScene::startMoveSprite), ONE_SECOND);  //情境開始1秒後動畫開始播放    return true;}

initMoveSprite()方法如下:調用Sprite::create方法建立cheng 、mai 、 ke、 ji四個精靈mai_Sprite = Sprite::create(MAI_IMAGE);………………..spriteSize = mai_Sprite->getContentSize();//給動畫尺寸賦值,每張動畫尺寸大小都一樣。//從左至右放置精靈圖片mai_Sprite->setPosition(ccp(visibleSize.width/2 - (2 *spriteSize.width),visibleSize.height/2));ke_Sprite->setPosition(ccp(visibleSize.width/2 -  spriteSize.width,visibleSize.height/2));ji_Sprite->setPosition(ccp(visibleSize.width/2,visibleSize.height/2));cheng_Sprite->setPosition(ccp(visibleSize.width/2 + spriteSize.width,visibleSize.height/2));把精靈錨點都設定為(0,0.5),這樣保證四張圖片可以置中排列在視窗位置mai_Sprite->setAnchorPoint(ccp(0,0.5));……………………this->addChild(mai_Sprite);//添加精靈到情境


動畫開始播放:


void SplashScene::startMoveSprite(float dt){          //動畫從右向做開始,最末一個精靈 cheng 首先開始從右向左移動一個位置MoveBy* moveChengToLeft1 = MoveBy::create(MOVE_SPLEED,ccp(-spriteSize.width,0));cheng_Sprite->runAction(moveChengToLeft1);         //精靈ji從左向右移動一個位置,正2個動畫相當於cheng和ji交換了位置MoveBy* moveJiToright = MoveBy::create(MOVE_SPLEED,ccp(spriteSize.width,0));CallFunc* callFunc = CallFunc::create(CC_CALLBACK_0(SplashScene::moveKeSpriteToLeft, this));         //精靈ji動畫結束後調用moveKeSpriteToLeft()方法,開始精靈ke 的動畫ji_Sprite->runAction(Sequence::create(moveJiToright,callFunc,NULL));}

精靈ke動畫:


void SplashScene::moveKeSpriteToLeft(){       //精靈 cheng從右向左再次移動一個位置MoveBy* moveChengToLeft2 = MoveBy::create(MOVE_SPLEED,ccp(-spriteSize.width,0));cheng_Sprite->runAction(moveChengToLeft2);//精靈ke從左向右移動一個位置,同cheng再次交換了位置MoveBy* ke_Sprite_MoveBy = MoveBy::create(MOVE_SPLEED,ccp(spriteSize.width,0));CallFunc* callFunc2 = CallFunc::create(CC_CALLBACK_0(SplashScene::moveMaiSpriteToLeft, this));         //精靈ke動畫結束後調用moveMaiSpriteToLeft()方法,開始精靈mai的動畫ke_Sprite->runAction(Sequence::create(ke_Sprite_MoveBy,callFunc2,NULL));}

精靈mai動畫:


void SplashScene::moveMaiSpriteToLeft(){//精靈 cheng從右向左再次移動一個位置MoveBy* moveChengToLeft3 = MoveBy::create(MOVE_SPLEED,ccp(-spriteSize.width,0));cheng_Sprite->runAction(moveChengToLeft3);//精靈mai從左向右移動一個位置,同cheng再次交換了位置MoveBy* mai_Sprite_MoveBy = MoveBy::create(MOVE_SPLEED,ccp(spriteSize.width,0));CallFunc* callFunc3 = CallFunc::create(CC_CALLBACK_0(SplashScene::spriteFadeOut, this));//精靈mai動畫結束後調用spriteFadeOut()方法,開始情境消失的動畫mai_Sprite->runAction(Sequence::create(mai_Sprite_MoveBy,callFunc3,NULL));}

情境消失動畫:


void SplashScene:: spriteFadeOut(){//定義4個消失的FadeOut動畫,期間2秒FadeOut* fadeOut1 = FadeOut::create(ONE_SECOND*2);FadeOut* fadeOut2 = FadeOut::create(ONE_SECOND*2);FadeOut* fadeOut3 = FadeOut::create(ONE_SECOND*2);FadeOut* fadeOut4 = FadeOut::create(ONE_SECOND*2);mai_Sprite->runAction(fadeOut1) ;ke_Sprite->runAction(fadeOut2) ; ji_Sprite->runAction(fadeOut3) ;CallFunc* callFunc4 = CallFunc::create(CC_CALLBACK_0(SplashScene::gotoMenuScene, this));//動畫結束後調用gotoMenuScene()方法進入MenuScene情境介面cheng_Sprite->runAction(Sequence::create(fadeOut4,callFunc4,NULL));}


進入情境的方法gotoMenuScene(),暫時只列印一下log,下篇開始

void SplashScene::gotoMenuScene()

{

         log("gotoMenuScene");

         Director::getInstance()->replaceScene(MenuScene::createScene());

}

過程很簡單,如下流程圖所示



標題動畫結束,待續................

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.