1. 程式人生 > >Cocos2d-js 使用cc.Animation實現跑酷

Cocos2d-js 使用cc.Animation實現跑酷

首先,瞭解一下cc.Animation作用是什麼,它是在cc.Sprite物件展示動畫時使用的一個cc.Animation物件。

    構造方法:

    cc.Animation(frames, delay, loops)

    在cc.Sprite物件展示動畫時使用的一個cc.Animation物件.

    cc.Animation物件包括cc.SpriteFrame物件和兩幀之間的時間. 

    你可以使用cc.Animate動作動畫化cc.Animation 物件.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // 1. 建立一個空的動畫幀 var animation1 = new cc.Animation(); // 2. 分別使用精靈幀、延續時長、迴圈次數來建立動畫 var spriteFrames = []; var frame = cc.spriteFrameCache.getSpriteFrame("grossini_dance_01.png"); spriteFrames.push(frame); var animation1 = new cc.Animation(spriteFrames); var animation2 = new cc.Animation(spriteFrames, 0.2);
var animation2 = new cc.Animation(spriteFrames, 0.2, 2); // 3. 分別使用動畫幀、延續時長、迴圈次數來建立動畫 var animationFrames = []; var frame =  new cc.AnimationFrame(); animationFrames.push(frame); var animation1 = new cc.Animation(animationFrames); var animation2 = new cc.Animation(animationFrames, 0.2); var animation3 = 
new cc.Animation(animationFrames, 0.2, 2); // 通過動畫來建立一個action var action = cc.animate(animation1); // 執行動畫 sprite.runAction(action);

    常用的屬性和方法介紹:

    addSpriteFrame(frame)

    新增一個動畫幀,該幀預設為一個延時單位,總的動畫幀長也增加一個延時單位  

    addSpriteFrameWithFile(fileName)

    使用圖片的檔名新增一個精靈幀. 其內部會建立一個cc.SpriteFrame並新增它,該動畫幀將自動新增一個延時單位

    addSpriteFrameWithTexture(texture, rect)

    通過texture和rect來建立一個精靈幀. 其內部會建立一個cc.SpriteFrame並新增它,該動畫幀將自動新增一個延時單位

    clone()

    克隆當前的動畫

    getDelayPerUnit()

    返回每一個延時單位的秒數

    getDuration()

    返回整個動畫的持續秒數. 它的結果等於總的延時單位數 * 每一個延時單位的時長

    getFrames()

    返回動畫幀陣列

    getLoops()

    返回動畫要迴圈執行的次數,0, 表示它不是一個動畫. 1, 表示已經被執行過一次 ..

    getRestoreOriginalFrame()

    當動畫完成時返回是否應該恢復原來的幀

    getTotalDelayUnits()

    返回cc.Animation總的延時單位數

    initWithAnimationFrames(arrayOfAnimationFrames, delayPerUnit, loops)

    使用精靈幀來初始化一個動畫,請使用建構函式傳參的方式來進行初始化,不要主動呼叫該方法

    initWithSpriteFrames(frames, delay, loops)

    通過幀與幀的一個延時來初始化cc.Animation, 但不要自己呼叫該方法,請使用建構函式傳參的方式來初始化.

    release()

    目前的javaScript繫結(JSB),在一些示例中,需要使用retain和release. 這是JSB的一個bug, 比較醜陋的一種解決方法是使用 retain/release. 所以,這2個方法是為了相容JSB. 這是一個hack,當JSB修復掉retain/release的bug後將它們將會被移除

    如果你建立一個引擎物件並沒有在同一幀內將它新增到場景圖中,你將需要保留這個物件的引用

    不然,JSB的自動釋放池會認為該物件未被使用這而直接將它釋放,

    之後當你想使用該物件時,你將會得到一個"無效的原生物件"的錯誤.

    retain方法通過增加一個引用計數來避免原生的物件被釋放掉,

    當該認為不再需要這個物件時你需要手工呼叫release方法,否則,將會發生記憶體洩露.

    在遊戲的開發程式碼中應保證retain與release方法的配對.

    retain()

 同上

    setDelayPerUnit(delayPerUnit)

    設定“延時單位”的秒數

    setFrames(frames)

    設定動畫幀陣列

    setLoops(value)

    設定動畫要迴圈執行的次數,0, 表示它不是一個動畫. 1, 表示已經被執行過一次 

    setRestoreOriginalFrame(restOrigFrame)

    設定當動畫播放完畢之後是否恢復成初始的幀

    cc.Animation的具體應用

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //第一步 建立動畫幀 var background = this.bg = new cc.Sprite("res/bg.png"); background.setPosition(this._size.width/2,this._size.height/2); background.setScale(const_radioW,const_radioH); this.addChild(background); this._animation = new cc.Animation(); for(var i = 0; i < bg_tree.length; i++){ this._animation.addSpriteFrame(new cc.SpriteFrame(bg_tree[i],cc.rect(0,0,background.width,background.height))); } //設定每一幀的延時秒數 this._animation.setDelayPerUnit(1/10); var action = cc.animate(this._animation).repeatForever(); background.runAction(action); //第二步 加速實現 this.bg.stopAllActions(); this._animation.setDelayPerUnit(1/15); var action = cc.animate(this._animation).repeatForever();

相關推薦

Cocos2d-js 使用cc.Animation實現

首先,瞭解一下cc.Animation作用是什麼,它是在cc.Sprite物件展示動畫時使用的一個cc.Animation物件。     構造方法:     cc.Animation(frames, delay, loops)     在cc.Sprite物件展

淺談Cocos2d-js cc.director

計時器 nim event cocos2d-x view top 函數 chan 常用 在cocos2d-x裏面,遊戲的任何時間,只有一個場景對象實例處於運行狀態,該對象可以作為當前遊戲內容的整體包對象。 環境設定 進入遊戲之前,導演會設置遊戲的運行環境: 設置遊戲視

Phaser.js之簡單的遊戲

1 var config = { 2 type: Phaser.AUTO, 3 width: 800, 4 height: 400, 5 physics: { 6 default: 'arcade', 7

HTML5遊戲實戰 3 60行程式碼實現水平遊戲

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

[原始碼分享]自己使用C語言和easyX實現的小藍鯨遊戲^_^

《Crazy Whale》是以“小藍鯨”為主角的跑酷遊戲。本遊戲通過操作“w”“s”或“↑”“↓”控制小藍鯨上浮下潛以躲避海底障礙物,在水面上時按“空格鍵”可以讓小藍鯨跳躍以越過島嶼,遊戲過程中小藍鯨存活時間越久得分越高。與此同時,小藍鯨吃到魚可以獲得加分或者無敵的獎勵。難度方面共設計了四個

HTML5遊戲實戰 3 60行程式碼實現水平遊戲

                跑酷遊戲無疑是目前最受歡迎的遊戲型別之一,3D跑酷遊戲可能比較難做一點(這個我不懂),2D跑酷卻是非常容易的,只要有美術資源,做一個《天天酷跑》這類流行遊戲也並非是什麼難事。 這裡通過一個松鼠跑酷的遊戲介紹一下用Gamebuilder+CanTK開發遊戲的方法,這個遊戲的主場景

js實現馬燈效果

網頁下面的狀態列裡有時會用到的跑馬燈效果,程式碼如下:<script language="javascript" type="text/ecmascript"> //定義要顯示的文字,注意最好是在文字的前後都加上空格,顯示時比較美觀 var str="

實現一個遊戲

Phaser入門教程 當使用谷歌瀏覽器訪問網頁的時候,如果斷網了,這時候頁面就會現一個跑酷的小遊戲。按下空格,這個遊戲就開始了。 本篇教程就使用phaser來實現這個遊戲。演示圖如下所示。 一個簡單的跑酷遊戲需要一個不斷移動的背景層,產生一個運動的

cocos2d-x遊戲開發 (四) 關聯物理世界

前面一節雖然實現了一個跑動的人物,但是他僅僅只是一個精靈在執行一個跑動的幀動畫而已。這一節我要實現精靈和物理世界關聯,讓這個人跟實際的Parkour一樣,有實際體積,會碰撞。 一個精靈怎麼樣和一個

cocos2d-x遊戲開發 (九) 原始碼下載及小結

這個東西零零碎碎寫了一個禮拜吧。其實也沒多少東西在裡面。文章後附下載地址 因為我沒用過chipmunk,而且它是面向過程的東西,情感上又不太願意去研究,所以我用box2d來做了物理模擬。個人感覺bo

cocos2d-js官方文件】十五、cc.sys

概述 將原來的cc.Browser以及sys合併。 下面是api改造情況: //左側是新api,右側是舊api //常量 cc.sys.LANGUAGE_ENGLISH <-- cc.LANGUAGE_ENGLISH cc.sys.LANGUA

JS實現時鐘

這裡分析一個帶年月日、時分秒、星期數的時鐘的製作過程,方法有點怪異,但是功能是OK的,主要是佈局有點小問題。 首先來看看佈局,時鐘上的所有字都由圖片構成,然後簡易排下版,就跳過佈局吧! <!DOCTYPE html> <html>

cocos2d-JS engine--cc模組 概述

 一、模組 cc        Cocos 引擎的主要名稱空間,引擎程式碼中所有的類,函式,屬性和常量都在這個名稱空間中定義。二、常用API  --cc.Acceleration     型別:

JS實現馬燈效果

跑馬燈效果 即可以用js實現,也可以用html的marquee元素實現。 <!-- 公告跑馬燈效果 --> <div class="notice-show"> <div></div> <

cocos2d-x遊戲開發 (二) 物理世界

泰然的跑酷用的chipmunk物理引擎,我沒有仔細學過這個東西。不過我看了一下他們的用法,感覺跟box2d差不多。box2d用純真的面向物件C++開發,用在這裡應該沒有問題,試一下。 泰然的工程

HTML5遊戲實戰 1 50行程式碼實現正面遊戲

                前段時間看到一個“熊來了”的HTML5跑酷遊戲,它是一個典型的正面2D跑酷遊戲,這裡借用它來介紹一下用Gamebuilder+CanTK開發正面跑酷遊戲的基本方法。CanTK(Canvas ToolKit)是一個開源的遊戲引擎和APP框架,是開發HTML5遊戲或者APP的利器,

利用css3的animation實現點點點loading動畫效果(二)

設置 str ack rdp 提交 ssi frame spin color box-shadow實現的打點效果 簡介 box-shadow理論上可以生成任意的圖形效果,當然也就可以實現點點點的loading效果了。 實現原理 html代碼,首先需要寫如下html代

COCOS2D - JS 之JSON 解析

ack 構建 padding ott esp for ++ style blog list 類型的json數據 var source = ["10004","1234","4","3","1.5","0.5"] var res= JSON.parse(so

js和jquery實現回到頂層

left ret poi add 寬度 fadein soft 距離 jquery實現 js <!DOCTYPE html> <html> <head> <title>返回頂部</title> <styl

html+JS刷圖實現視頻效果

java scrip snap hive image com htm load() logs 網頁播放視頻須要載入播放器,可是通過刷圖也能實現視頻播放的效果 JS中用到Z-index屬性,記錄一篇解說Z-index屬性的博客的地址: http://www.cnblogs