1. 程式人生 > >cocos2dx基礎篇(24)——基本動畫CCAnimation/CCAnimate

cocos2dx基礎篇(24)——基本動畫CCAnimation/CCAnimate

【嘮叨】

    基本動畫製作需要用到CCAnimation類,用於儲存動畫相關的資訊。以及由CCActionInterval繼承的CCAnimate動畫動作。

    還有一些在建立動畫動作的過程中,可能會用到的一些類CCSpriteFrame、CCSpriteFrameCache、CCAnimationFrame、CCAnimationCache。

    本節的內容可能比較複雜,需要掌握的東西比較多,大家慢慢理解吧。。。

【致謝】

【小知識】

    以下名詞術語對應的中文名,純屬自己歪歪,只是為了方便自己記憶罷了。i_f32.gif

    CCSpriteFrame     :

精靈幀。    它是相對動畫而產生的,其實就是一張紋理圖片。

    CCAnimationFrame  :動畫幀。    由精靈幀與間隔幀陣列成,是動畫CCAnimation中的一幀。

    CCSpriteFrameCache:精靈幀緩衝。用於存放精靈幀CCSpriteFrame的緩衝池。

    CCAnimationCache  :動畫緩衝。  用於存放動畫CCAnimation的緩衝池。

    delayPerUnit      :單位幀間隔。連續兩個動畫幀之間的時間間隔。單位:秒。

    delayUnits        :間隔幀數。  當前動畫幀到下一個動畫幀需要等待的單位幀間隔的個數。

【Demo下載】

【3.x】

    (1)去掉 “CC”

    (2)SpriteFrameCache、AnimationCache 中獲得、釋放單例物件的方法:

> 使用 getInstance() 替代 sharedSpriteFrameCache()

        > 使用 destroyInstance() 替代 purgeSharedSpriteFrameCache()

    (3)Animation 中一些引數的變化:

> createWithSpriteFrames  中的引數 CCArray

 改為 Vector<SpriteFrame*>&

> create                   中的引數 CCArray 改為 Vector<AnimationFrame*>&

> setFrames()/getFrames() 中的引數 CCArray 改為 Vector<AnimationFrame*>&

    (4)Animation 中的函式變化:

        > addSpriteFrameWithFileName(..) 改為 addSpriteFrameWithFile(...)

    (5)其他變化不大。

【CCAnimation/CCAnimate】

1、預備知識

    動畫就和動漫是類似的,製作動畫時,就需要用到好多圖片,單位幀間隔,以及每一個動畫幀到下一個動畫幀的間隔幀數,然後按照幀間隔來進行動畫幀圖片的切換,從而形成了動畫。

    cocos2dx中的基本動畫是由CCAnimation和CCAnimate兩個類的配合而完成的。

    (1)CCAnimation用於儲存動畫相關的資訊。其中包含用於動畫的所有動畫幀資訊,單位幀的時間間隔,總幀數,動畫重複次數等等資訊。 

    (2)CCAnimate  用於建立動畫的CCAction動作,需要CCAnimation作為建立的引數。

    PS:Animation 只是存放了動畫需要的資料資訊。而執行動畫還是需要 Animate。

    在講動畫動作之前,首先需要講解一下如下四個類與動畫動作有關的用法:

    1.1、CCSpriteFrame精靈幀

    用精靈幀來建立的CCAnimation。而實際上在CCAnimation初始化時,是用精靈幀來建立一個動畫幀CCAnimationFrame,且設定動畫幀的間隔幀數DelayUnits為:1

    如:CCAnimation設定的單位幀間隔delayPerUnit = 0.2,

        那麼從當前動畫幀到下一個動畫幀所需要延遲等待的時間間隔:0.2 * 1 = 0.2 秒。

1 2 3 4 5 6 7 8 9 10 // //建立精靈幀CCSpriteFrame陣列 //用於在內部建立動畫幀CCAnimationFrame,從而建立CCAnimation CCArray* array = new CCArray(); //建立陣列 char str[] = "xxx.png"; CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str); //從精靈幀緩衝池中獲取一個精靈幀 array->addObject(frame); //將精靈幀新增到陣列中 //

    1.2、CCAnimationFrame動畫幀

    說明:動畫幀就是在精靈幀的基礎之上,設定了到下一幀需要的間隔幀數,是動畫CCAnimation中的一幀。其中設定動畫幀的間隔幀數:setDelayUnits來完成的。

    如:CCAnimation設定的單位幀間隔delayPerUnit = 0.2,

        而動畫幀的設定的間隔幀數DelayUnits = 10,

        那麼當前動畫幀到下一個動畫幀所需要延遲等待的時間間隔:0.2 * 10 = 2 秒。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 // //建立動畫幀CCAnimationFrame陣列 CCArray* array = new CCArray(); //建立陣列 char str[] = "xxx.png"; CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str); //從精靈幀緩衝池中獲取一個精靈幀 CCAnimationFrame* animationFrame = 

相關推薦

cocos2dx基礎(24)——基本動畫CCAnimation/CCAnimate

【嘮叨】     基本動畫製作需要用到CCAnimation類,用於儲存動畫相關的資訊。以及由CCActionInterval繼承的CCAnimate動畫動作。     還有一些在建立動畫動作的過程中,可能會用到的一些類CCSpriteFrame、CCSpriteFrameCache、

cocos2dx[2.x](19)--基本動畫CCAnimation/CCAnimate

【嘮叨】 基本動畫製作需要用到CCAnimation類,用於儲存動畫相關的資訊。以及由CCActionInterval繼承的CCAnimate動畫動作。 還有一些在建立動畫動作的過程中,可能會用到的一些類CCSpriteFrame、CCSpriteFrameC

python基礎基本數據類型們

我們 align clas text pytho code div style tex Python3 基本數據類型 Python 中的變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以後該變量才會被創建。 在 Python 中,變量就是變量,它沒有類型,我們所說的"類

cocos2dx基礎(25) 簡單碰撞檢測

【3.x】     將數學類 CCPoint、CCRect 改為v3.x版本的 Vec2、Rect 就好了。 【簡單碰撞檢測】     在一些遊戲中經常會遇到碰撞檢測的情況,如憤怒的小鳥飛出去後,是否與石頭髮生碰撞。     雖然說有一個Box2D物理碰撞引擎,但

cocos2dx基礎(26) 單例模式

    單例模式,說的通俗一點就是:建立某個類的全域性唯一靜態例項物件。也就是說從它建立開始,一直到整個遊戲程式結束才會釋放資源,期間一直儲存的著資料。     單例類在大部分遊戲中應該是必不可少的部分,如整個遊戲音樂的開關控制、資料的載入與儲存等都需要一個全域性訪問點來控

Unity基礎:Mecanim動畫系統重點整合

1.Mecanim是Unity 4.0的新功能。是一個豐富且精密的動畫系統。 2.為人形角色提供簡易的工作流和動畫建立能力。 3.動畫重定向,即一個骨骼和動作,多角色使用。 4.針對遠古版本的An

cocos2dx基礎(2)——字型標籤CCLabel

【嘮叨】     CCLabelTTF、CCLabelAtlas、CCLabelBMFont。     cocos2dx提供了三種文字字型的顯示:CCLabelTTF(一般字型)、CCLabelAtlas(自定義字型)、CCLabelBMFont(自定義字型)。接下來給大

Python學習—基礎基本數據類型(二)

weight gin idt tin size 基礎篇 集合 back 重要 Python中重要的數據結構 1.列表 2.字典 3.元組 4.集合 列表 continue...... h3 { background-color: #009ACD; color: #FF

cocos2dx基礎(7) 觸碰事件

    cocos2dx遊戲引擎的重點是在於移動裝置的跨平臺開發,而移動裝置上的遊戲大部分都是通過螢幕觸碰來進行的。比如主選單的按鈕觸碰,打飛機中飛機的觸碰移動,都需要用到觸碰操作。想一想之前講的選單按鈕CCMenu,選單項的點選響應事件,其實就是觸碰。     cocos

【Javascript基礎】——基本資料型別的特殊型別null,undefined講解及typeof用法

【前言】    在回顧javascript的時候總結了javascript的一些資料型別,它主要分為了兩種資料型別:基本型別和非基本型別(object型別);基本資料型別包括了:number,stri

Linux 磁盤管理 基礎--創建基本文件分區

分區 文件系統 掛載 1 概述本文通過對講解了磁盤的基本概念,分區,創建文件系統,掛載,卸載等步驟進行講解。使得用戶能夠創建基本的磁盤並掛載使用空間。2 磁盤基本概念2.1 磁盤空間每個扇區大小是512byte,這是磁盤的最小單位每一個磁道上有多少個扇區就是扇區數 sectors每一圈叫做磁道(t

RabbitMQ基礎教程之基本使用

UNC 用戶名 eat TE utf-8 hms 隊列 over rgs RabbitMQ基礎教程之基本使用篇 最近因為工作原因使用到RabbitMQ,之前也接觸過其他的mq消息中間件,從實際使用感覺來看,卻不太一樣,正好趁著周末,可以好好看一下RabbitMQ的相關知識點

『中級』docker學習必會網絡基礎24

p地址 體驗 官網 分配 ping通 最短 開放 基礎 機構 >原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文鏈接地址:『中級篇』docker學習必會網絡基礎(24) 對於今天的內容,相信大部分老鐵上大學的時候都學過。 基於數據包的通信方式

flash做動畫教程(基礎

第一步、軟體的下載與安裝 Flash MX 2004 第二步、 新建一個flash文件 也就是場景一 你可以右擊空白的文件,作如下操作: 一 、改變文件的背景顏色 二、根據自己製作gif動態圖片的大小,來選擇文件的寬高    二、新

rust學習筆記基礎2--基礎變數宣告的基本規則(霜之小刀)

rust學習筆記基礎篇2–基礎變數宣告的基本規則(霜之小刀) 歡迎轉載和引用,若有問題請聯絡 若有疑問,請聯絡 Email : [email protected] QQ:2279557541 Rust的對變數的宣告很嚴格,有嚴格的型別和必須在宣

MongoDB基礎教程系列--第二 MongoDB基本操作(一)

1、安裝環境 在官網上下載MongoDB的最新版本,根據自身Windows版本下載正確的MongoDB版本。下載後,雙擊32位或者64位.msi檔案,按操作提示安裝就可以了。 說明: 32 位版本的 MongoDB 只支援 2G 以下的資料庫,只適用於測試及評估。 在

MongoDB基礎教程系列--第三 MongoDB基本操作(二)

1、集合操作 1.1、建立集合 MongoDB 用 db.createCollection(name, options) 方法建立集合。 格式 1 db.createCollection(name, options) 其中

SpringBoot基礎Bean之基本定義與使用

我們知道在Spring中,有兩個非常有名的特性,依賴注入(DI)與切面(AOP),其中依賴注入其主要的作用,可以說就是維護Spring容器建立的Bean之間的依賴關係,簡單來說就是一個bean(假定名為A)持有另一個Bean(假定名為B)的引用作為成員變數b,

Python開發第一 基礎(二)-------運算子與基本資料型別

  對於python而言,一切事物都是物件,物件是基於類建立的,物件繼承了類的屬性,方法等特性       一.int       首先我們來檢視一下int包含了哪些函式          # python3

Arduino基礎入門24—繼電器控制

繼電器是一種電子控制器件,是用較小的電流去控制較大電流的一種“自動開關”,通常應用於自動控制電路中起著自動調節、安全保護、轉換電路等作用。 本篇介紹繼電器的使用,通過串列埠傳送命令來控制繼電器動作。 1