实习小白::(转) Cocos2d-x 3.0开发(十三)使用CocoStudio编辑帧事件并关联到程序...
1、概述
? ? 幀事件也是新加入的功能。這篇中我們將看到如何使用它。我們將上篇中制作的動畫稍加修改。有圖為證:
?
?
2、用途與原理
?
? ? 首先介紹一下幀事件。正如其名:一個與幀相關聯的事件。
? ? 為什么要這么做呢?首先沒人想做一大堆碎動畫,然后一點一點拼著播放吧。另外,有時候流程與事件控制最好關聯到幀。比如一個攻擊動作,有出刀和收刀兩部 分。傷害自然是在刀所觸到敵人時候產生的。做成兩個動畫比較麻煩,程序要管理大量的動畫,而且美工也會很郁悶:不但給你們切圖,還要給你們切動畫。如果用 固定時間來做,也是會有問題。比如機器卡了,幀數就會下降。這個時候,時間就不準確了。用幀事件的方式就會比較好,到了“觸刀”那幀,就會有事件,能較好 的處理這種情況。
?
? ? 它的原理是監聽。當運行到事件所在的幀時,會觸發回調。我們要做的就是在回調函數中操作,判斷這一幀是不是我們想要的,標記的方式是Tag字符串。
?
3、設置幀事件
? ? 打開項目,運行動畫編輯器,切換到動畫模式。
? ? 將時間軸拖動到相應幀處,選擇一個對象,這里我選擇的是左手。然后在它的屬性中設置幀事件。
?
?
4、創建新工程
? ? 運行腳本創建testFrameEvt,編譯運行確保原始工程正確。
? ? 將CocoStudio導出的資源復制到Resource目錄下。
? ?然后配置CocoStudio導出文件的依賴路徑和庫。可參照:Cocos2d-x 3.0 開發(十一)3.0 alpha1文件結構變化?。
?
5、載入動畫
?
? ? 更改init:
?
?
[cpp] view plaincopyprint??
? ? 運行,可見動畫播放。
?
6、監聽幀事件
?? ? 在類中添加一個函數:
?
[cpp] view plaincopyprint??
? ? 并在cpp中實現:
[cpp] view plaincopyprint??
? ? 可以看出,事件是由一個字符串來標記的。
? ? 最后在init中注冊:
?
[cpp] view plaincopyprint??
? ? 幀事件我們用了一個效果來表現,所以還要恢復Grid,這里我們加入一個schedule函數。當然,這里也可以用幀事件來標記恢復點。
?
[cpp] view plaincopyprint??
? ? 編譯運行,就能看到效果了。
?
7、總結
??? 通過在cocoStudio中設置Tag的方式來標記幀事件,在程序中設置回調。然后根據tag名來判斷是否是需要的幀事件。這里我有兩個擔心,首先是效 率問題,不知當幀事件多的時候,監聽運行起來效率如何。第二是當效率低自動抽幀時,會不會將事件幀抽掉,導致沒有事件出現。但愿我的擔心是多余的。
?
? ? Demo 下載:http://download.csdn.net/detail/fansongy/6621423
?
? ? 本篇博客出自阿修羅道,轉載請注明出處,不得用于商業用途:http://blog.csdn.net/fansongy/article/details/16991385?
轉載于:https://www.cnblogs.com/dudu580231/p/4983785.html
總結
以上是生活随笔為你收集整理的实习小白::(转) Cocos2d-x 3.0开发(十三)使用CocoStudio编辑帧事件并关联到程序...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Ant实现Java项目的自动构建和部署
- 下一篇: memset函数源码实现