1. 程式人生 > >Cocos2d-x3.2 Animate幀動畫

Cocos2d-x3.2 Animate幀動畫

cocos2d-x-lua 3.3中使用plsit檔案建立動畫,部分程式碼:

--Lua 程式碼實現:使用plist檔案來載入到animation:

   isPlaying =false

 --create function action
    local function OnAction(menuItemSender)
    
        if not isPlaying then
           local animation = cc.Animation:create()
             
           animation:addSpriteFrameWithFile("h1.png")
           animation:addSpriteFrameWithFile("h2.png")   
           animation:addSpriteFrameWithFile("h3.png")
           animation:addSpriteFrameWithFile("h4.png")
           
           animation:setDelayPerUnit(0.15)
           animation:setRestoreOriginalFrame(ture)
        
           local action = cc.Animate:create(animation)
           sprite:runAction(cc.RepeatForever:create(action))
     
           isPlaying = true

c++程式碼3中實現方式:

//獲取螢幕大小 Size visibleSize = Director::getInstance()->getVisibleSize(); //auto size = Director::getInstance()->getWinSize(); //幀動畫的建立 //方式一,通過多張圖片來建立 auto sprite1 = Sprite::create("grossini_dance_05.png"); sprite1->setPosition(Vec2(visibleSize.width*0.3, visibleSize.height/2));
this->addChild(sprite1); //建立幀動畫序列,名詞形式 auto animation = Animation::create(); for (int i=5; i<11; i++) { char szName[100] = {0}; sprintf(szName, "grossini_dance_%02d.png", i); animation->addSpriteFrameWithFile(szName); } //設定幀動畫屬性 animation->setDelayPerUnit(2.0f / 6);      //每一幀停留的時間,2秒時間完成6幅圖片顯示,切記要寫成2.0f形式!
animation->setRestoreOriginalFrame(true);       //播放完後回到第一幀 auto animate = Animate::create(animation); sprite1->runAction(RepeatForever::create(animate)); //方式二,通過一張集合的圖片來建立 //建立2D紋理 auto texture = Director::getInstance()->getTextureCache()->addImage("dragon_animation.png"); //建立圖片幀 auto frame0 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*0, 132, 132)); auto frame1 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*0, 132, 132)); auto frame2 = SpriteFrame::createWithTexture(texture, Rect(132*2, 132*0, 132, 132)); auto frame3 = SpriteFrame::createWithTexture(texture, Rect(132*3, 132*0, 132, 132)); auto frame4 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*1, 132, 132)); auto frame5 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*1, 132, 132)); auto sprite2 = Sprite::createWithSpriteFrame(frame0); sprite2->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2)); this->addChild(sprite2); //儲存圖片幀 //Vector<cocos2d::AnimationFrame *> array; Vector<cocos2d::SpriteFrame *> array; array.pushBack(frame0); array.pushBack(frame1); array.pushBack(frame2); array.pushBack(frame3); array.pushBack(frame4); array.pushBack(frame5); auto animation2 = Animation::createWithSpriteFrames(array, 0.2f);   //此處createWithSpriteFrames()函式確實每幀間隔時間引數,需自行加上去!!! sprite2->runAction(RepeatForever::create(Animate::create(animation2))); //方式三,通過.plist 檔案來建立 auto cache = SpriteFrameCache::getInstance(); cache->addSpriteFramesWithFile("animate.plist"); auto sprite3 = Sprite::createWithSpriteFrameName("grossini_dance_05.png"); sprite3->setPosition(Vec2(visibleSize.width*0.7, visibleSize.height/2)); this->addChild(sprite3); Vector<cocos2d::SpriteFrame *> arr; char str[100] = {0}; for (int i=1; i<15; i++) { sprintf(str, "grossini_dance_%02d.png", i); auto frame_2 = cache->SpriteFrameCache::getInstance()->getSpriteFrameByName(str);   //3.2版本有改變 arr.pushBack(frame_2); } auto animation3 = Animation::createWithSpriteFrames(arr, 0.2f);     //此處也不要忘記加上時間間隔引數 sprite3->runAction(RepeatForever::create(Animate::create(animation3))); return true;

相關推薦

Cocos2d-x3.2 Animate動畫

cocos2d-x-lua 3.3中使用plsit檔案建立動畫,部分程式碼: --Lua 程式碼實現:使用plist檔案來載入到animation:    isPlaying =false  --create function action     local funct

cocos2d-x3.2 下使用多線程

lan ont trac false main 下使用 cpp pub .cpp 事實上在cocos2dx下使用多線程事實上就是用C++去寫,這裏提供幾個簡單的樣例: 原文地址:http://blog.csdn.net/qqmcy/article/details/362

Cocos2d-x3.3beta0創建動畫的3種方式

sprintf action frame idt adding instance 修改 name 工具 1、單獨載入精靈對象 渲染效率低,浪費資源,不推薦用該方法。代碼例如以下:註:代碼僅僅需貼到HelloWorldScene.cpp中就可以。 //First,單獨渲染

cocos2d-x3.2原始碼分析之 ---- 類FileUtils實現把資源放在Resources檔案目錄下達到多平臺的引用

  我以TMXTiledMap::Create函式為講解物件。   首先轉到TMXTiledMap::Create的定義中,其定義是在CCFastTMXTiledMap.cpp檔案中,程式碼1如下。其目錄是E:\mycoscos2d\test2\cocos2d\cocos\2d中,這就說明這是與具體平臺無關

cocos2d-x3.2 下使用多執行緒

其實在cocos2dx下使用多執行緒其實就是用C++去寫,這裡提供幾個簡單的例子: 1、 // // PublicScene.cpp // testthirdone // // Created by 杜甲 on 14-7-1. // void hello() {

cocos2d-x3.2中用shader使圖片背景透明

    今天有人問我問題,說怎麼實現背景虛化,換句話說,就是把某張圖片的背景顏色(比如白色)給弄沒了,不然貼在螢幕上有白色背景。下面是解決方法。用shader處理了畫素,使黑色背景透明。 Shader.h #ifndef __TestShader__ShaderSprite

Cocos2d-x3.2與OpenGL渲染總結(一)Cocos2d-x3.2的渲染流程

    最近幾天,我都在學習如何在Cocos2d-x3.2中使用OpenGL來實現對圖形的渲染。在網上也看到了很多好的文章,我在它們的基礎上做了這次的我個人認為比較完整的總結。當你瞭解了Cocos2d-x3.2中對圖形渲染的流程,你就會覺得要學會寫自己的shader才是最重

楓葉天空Cocos2d-x3.0系列教程二 序列動畫

更新日誌: 2014-01-31  增加了cocoStudio動畫編輯器的說明 內容概述: 從今天開始,我們就正式進入cocos2d-x3.0的開發教程了,本篇的核心內容是序列幀動畫。 準備工作 1、首先我們建立一個新的場景類,作為我們本系列教程的一

Cocos2d-x開發實例介紹動畫使用

rect http splay end ram nal cache wtl 布爾 以下我們通過一個實例介紹一下幀動畫的使用。這個實比例如以下圖所看到的,點擊Gobutton開始播放動畫,這時候播放button標題變為Stop,點擊Stopbutton能夠停止播放動畫。以下

Cocos2d-x 3.x序列動畫

vector 序列幀 bash cpp ams with 序列 object -s Animation : 一個給精靈對象執行的幀動畫對象。 Animate:是將動畫包裝成動作的類。 AnimationCache:管理動畫的單例。 簡介 Animat

2個網頁動畫框架的調研

背景描述 需求中有的地方需要用到動畫,設計動畫的軟體主要有AE和Spine,新入職的動效設計師可能之前是做遊戲動畫設計的,他給了我們一份Spine動畫匯出的資源,於是我開始了Spine的調研。 我們對動畫框架的要求 和寧哥溝通過後,明確了我們開發這邊對於動畫框架的3點要求 能夠完成動畫的渲染

Cocos2d-序列動畫

基礎原理 Cocos2d-x中,動畫的具體內容是依靠精靈顯示出來的,為了顯示動態圖片,我們需要不停切換精靈顯示的內容,通過把靜態的精靈變為動畫播放器從而實現動畫效果。動畫由幀組成,每一幀都是一個紋理,我們可以使用一個紋理序列來建立動畫。 我們使用Animat

Cocos動畫Animate和Animation建立

本文為作者原創,其中知識內容出自閃電終結者的視訊課程 首先用ppt簡單的做一個幀動畫,把做好的每一張圖片命名為pass01.png pass02.png ….複製到res資料夾下 // 精靈是用於顯示動畫效果,需要寫一個動畫,然後往動畫中新增圖片,在讓精靈

cocos2d-x 原始碼解析】動畫

前言 幀動畫是以序列幀輪放的方式來表現一個動畫,就像膠片電影一樣,一張張畫面進行切換,當切換的間隔足夠小時,人眼就看不出中間的間隔,而是一個流暢的視訊。cocos2d-x 中的幀動畫涉及到三個類 AnimationFrame,Animation 和 Anima

Quick-cocos2d-x播放動畫

本文介紹Quick幀動畫執行步驟,C++專案和幀動畫原理請參考: http://blog.csdn.net/ellis1970/article/details/79124686 和C++專案相比,Quick播放幀動畫有些限制條件:無法以離散的圖片檔案播放幀動畫,只支援pli

Cocos2d-x 3.0final 終結者系列教程22Cocos Studio動畫編輯器的動畫和骨骼動畫詳解

建立骨骼動畫 首先,開啟Cocos Studio 的 Animation Editor(動畫編輯器),新建一個動畫工程。  同Spine一樣,Cocos Studio動畫編輯器也有兩種模式,但這裡是形體模式和動畫模式。使用者需要在形體模式下組裝角色部件,併為其繫結骨骼;並在動畫模式下調整骨骼相應屬性生成

關於cocos2d序列動畫plist檔案的建立

轉載請註明出處 用過的人都知道,cocos2d的動畫編輯器是多麼的坑,自從cocos2d支援Animation後,開始使用Animation動畫了。關於Animation的使用網上也有很多,但是我看了一下,主流的就是兩種方法,一是:手動新增,將plist檔案裡的精靈幀一

cocos2d-x3.0/2.0 win7第一次建立專案需要呼叫到的指令碼(不斷更新維護)//cocos2d-x 教程一

第一步: github上最新的引擎,值得注意的是官網上釋出的引擎是穩定版。選擇哪種就看個人喜好了。但是最新功能你都體驗不到。建議下載git工具然後clone到本地來更新 第二步: 下載後 用cmd終端裡面進入cocos2d-x\tools\project-creator

cocos2d-js系列問題】cocos2d-js建立動畫的兩種方法

不過在這之前,一定要先把圖片載入到記憶體當中去;其實你也可以不加,但是需要換另外一個函式就行; //將plist問價載入到記憶體當中 cc.spriteFrameCache.addSpriteFrames(res.play_plist); 第一種方法: 建立一個空的精靈

cocos2d+lua實現動畫播放

使用Cocos2d播放幀動畫的方法有兩種: 先來介紹一下流程: 1.得到動畫的每一幀的陣列FrameArray 2.將幀動畫陣列包裝成Animation物件 3.將Animation物件轉化為可以播放的Action物件 4.使用Sprite來播放Action 第