1. 程式人生 > >cocos2d-x 瞬時動作/延時動作

cocos2d-x 瞬時動作/延時動作

第一部分:動作概述
動作可以說構成了cocos2dx的精華(你看動作類有多少子類就知道了)。

動作是什麼?動作可以理解為指令,這些指令由節點執行。

動作由節點(node)執行,該節點執行動作的時候,他的所有子節點跟著執行,這一特性是非常有用的。

執行動作的程式碼非常簡單,先生成,然後讓節點執行:

?
1 2 CCAction *action=.... node->runAction(action);

CCAction及其子類的繼承樹非常龐大,我們需要一個一個介紹。

CCAction及其子類簡圖:

第二部分:CCActionInstant家族(立即動作)
立即動作就是不需要時間,馬上就完成的動作。立即動作的共同基類是CCActionInstant。CCActionInstant的常用子類有:

CCFlipX:X軸翻轉、CCFlipY:Y軸翻轉
CCHide:隱藏、CCShow:顯示、CCToggleVisibility:切換可視性
CCPlace:放置到一個位置
CCCallFunc家族:回撥函式包裝器

這些類的使用非常簡單,就不說了

第三部分:CCCallFunc家族(回撥函式包裝器)
CCCallFunc是CCActionInstant的子類,是非常重要的一個類族,就是介面卡。用大白話說,就是做了一層包裝,把函式包裝成動作,這樣你在執行動作的時候,就可以執行函數了。聽起來很怪異嗎?為什麼不直接執行函式呢?這是因為執行條件不同。

我們看個例子:玩家死亡動畫(也是個動作)播放完成後,結束遊戲。

?
1 2 3 4 5 6 CCAction *sequneceAction = CCSequence::actions( getAnimate(),//獲得死亡動畫,自己實現的函式 CCCallFunc::actionWithTarget(this, callfunc_selector(Hero::deadDoneCallback)),//結束遊戲用的回撥 NULL); this->runAction( );

//回撥函式的定義

?
1 2 3 4 5 6 void Hero::deadDoneCallback() { this->setIsVisible(false);//設定節點隱藏,讓cocos2dx自身清理,而不是馬上清理。 CCScene *scene=GameOverScene::scene(); CCDirector::sharedDirector()->replaceScene(CCTransitionFade::transitionWithDuration(1.2f,scene)); }

其他的程式碼先不用管它,我們重點是:

?
1 CCCallFunc::actionWithTarget(this, callfunc_selector(Hero::deadDoneCallback);

cocos2dx中,一般物件都是採用靜態方法生成的,我們看這個函式簽名:

?

相關推薦

cocos2d-x 瞬時動作/動作

第一部分:動作概述 動作可以說構成了cocos2dx的精華(你看動作類有多少子類就知道了)。 動作是什麼?動作可以理解為指令,這些指令由節點執行。 動作由節點(node)執行,該節點執行動作的時候,他的所有子節點跟著執行,這一特性是非常有用的。 執

cocos2d-x 動畫載入 執行

void SnatchDeveloper::hechengframeCacheAction() {          CCArray * hechengFrames=CCArray::create();     for (int i=0; i<8; i++)    

Cocos2d-x入門之旅[3]動作

Cocos通過動作(Action)讓精靈動起來,把數個動作組成序列(Sequence)就能讓精靈做出連續的動作,在動作中我們可以改變精靈的位置,旋轉角度,縮放比例,等等 動作(Action) 首先我們建立一個Action物件,同樣使用create,這裡我們還是使用HelloWorld場景裡的那張圖片 auto

cocos2d-x 切換骨骼動畫殘影問題

最近在做的一個專案,NPC的動畫是用Spine來做的。遊戲中隨著不同的狀態變化,會導致NPC在“待機”、“準備進攻”、“進攻“、”眩暈“、”死亡“等等多種狀態之間來回切換,NPC每切換一種狀態,隨之就要立刻播放該狀態對應的動畫。 遊戲中播放spine動畫是用Skele

Cocos2d-x怎樣控制動作速度

cocos 代碼下載 auto pan als poi csdn max-width align 基本動作和組合動作實現了針對精靈的各種運動和動畫效果的改變。但這種改變速度勻速的、線性的。通過ActionEase及其的派生類和Speed 類我們能夠使精靈以非勻速或非線性速

cocos2d-x,重復動作

col rep png pan pre scaleto sprite span cal Sprite * sprite11 = Sprite::create("4.png"); sprite11->setPosition(visibleSize /

Cocos2d-x學習筆記(四)淺析動作類CCAction(3)

【1】動作管理類CCActionManager: 動作管理類CCActionManager是一個管理所有動作的單例,可以對動作進行一系列的操作,如:新增動作、刪除動作、暫停動作、重啟動作,這個單例可以通過CCDirector::sharedDirector()->getActionMa

Cocos2d-x學習筆記(三)淺析動作類CCAction(2)

有關CCAction其它動作類簡介: (1)攝像機動作類CCOrbitCamera:  攝像機動作是環繞中心螢幕旋轉所形成的動作,其旋轉座標採用球座標描述。  Create()函式原型CCOrbitCamera* create(fl

Cocos2d-x學習筆記(二)淺析動作類CCAction(1)

Cocos2d-x的動作類CCAction並不是一個在螢幕中顯示的物件,動作必須要依託於CCNode類及其子類的例項才能發揮作用。CCAction繼承於物件類CCObject,有三個子類:有限時間動作、跟隨、移動速度,其中有限時間動作子類CCActionInterVal會形成動畫過程。

cocos2d-x 動作

int 動作 相關 n) 分享 img 間隔 .com inter 動作類是Action      IntervalAction是間隔動作,InstantAction是瞬時動作。   動作的管理是要由節點負責的,任何的節點都可以管理節點,如精靈、菜單、層、甚至場景都可以管理

Cocos2d-x 3 1 1 Lua示例 ActionEaseTest(動作

cc.p(60, s.height * 4 / 5))  -- 初始化層  Helper.initWithLayer(layer)  return layerend-------------------------------------  SpriteEase------------------------

cocos2d-x中的動作分析

在cocos2d-x中動作的執行排程是受cocos2d-x的全域性定時器控制的,當初始完導演後便已經啟動用於管理動作的update定時器。 bool CCDirector::init(void) { ... m_pActionManager = new CCAct

cocos2d-x學習筆記(10)重複動作RepeatForever和Repeat 以及動作組合Sequence和Spawn

Repeat和RepeatForever Sprite* sprite=Sprite::create("sprite.png"); sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/

Cocos2d-x Sprite 執行 CCFade~ 這類透明度變化動作的一些有關問題

Cocos2d-x Sprite 執行 CCFade~ 這類透明度變化動作的一些問題 在引擎中提供了幾個有關透明度變化的動作:CCFadeIn,CCFadeOut,CCFadeTo CCFadeIn:the opacity from 0 to 255 CCFadeO

Cocos2D-X 】初窺門徑(5)CCAction:動作

//移動到,1s, pRole->runAction(CCMoveTo::create(1,ccp(300,300))); //跳躍到,1s,高度50,分為5步 pRole->runAction(CCJumpTo::create(1,ccp(300,300),50,5)); //放

cocos2d-x 動作的分類與使用

       原本計劃是把動作的概念理清,並分類介紹如何使用,但是網上看到幾篇寫得比較詳細,而且都有例項,在此就轉載一下,並表示一下感謝。 //////////////////這一段轉自Cocos2d-x官方中文文件 v3.x////////////////

cocos2d-x中,多個精靈執行同樣的動作

簡而言之:雖然是“同樣”(從效果來說)的動作,但是每個精靈必須run不同的action物件 例如:需要三個精靈同時跑到一個點去,使用動作來完成。 //建立3個精靈 auto s1 = Spr

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

這裡是關於Cocos2d-x遊戲開發學習中的關於精靈動作的程式碼在這裡記錄,以作備忘。(沒有添加註釋的動作,即曾經建立過並寫過註釋,所以第二次建立沒寫註釋)#include "HelloWorldScene.h"USING_NS_CC;CCScene* HelloWorld:

cocos2d-x動作、特效和動畫(三)扭曲動作

    CCActionInterval *actionTo = CCSkewTo::create(2, 70.0f, 0.0f);       CCActionInterval *actionToBack = CCSkewTo::create(2, 0, 0);  

Cocos2d-x如何控制動作速度

基本動作和組合動作實現了針對精靈的各種運動和動畫效果的改變。但這樣的改變速度勻速的、線性的。通過ActionEase及其的派生類和Speed 類我們可以使精靈以非勻速或非線性速度運動,這樣看起了效果更加逼真。ActionEase的類圖如下圖所示。下面我們通過一個例項介紹一下這