日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lua cocos 创建动画的几种方式

發布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lua cocos 创建动画的几种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

lua cocos 創建動畫有如下幾種方式可供大家選擇:
第一種方式:
在cocos studio 中拖進去一個Armature,在Armature的特性一欄導入美術或者自己做好的動畫(導入文件)。

如果想讓動畫自動循環播放,就把播放控制的兩個勾選上就可以了。

如果想讓動畫播放結束后有一個延遲在播放同個動畫或者其他動畫,可以設置動畫回調,請參考另一篇文章:
[http://blog.csdn.net/wdfscsdn2015/article/details/72641632]
在代碼中我們只需要如下調用就可以播放動畫:

viewNode.ArmatureNode_quickStart:getAnimation():play("hall_quickStartBtnAnimation1")

第二種方式:
這種方式就是完全依賴于代碼來實現:

--開始循環播放動畫 function MainCtrl:startDealerAnimation()local animation = cc.Animation:create()if animation thenfor i = 1, 24 doanimation:addSpriteFrameWithFile("res/hall_dealerPic/dealer" .. tostring(i) .. ".png")endanimation:setDelayPerUnit(1 / 12)animation:setRestoreOriginalFrame(true)self._viewNode.SpriteDealer:setVisible(true)self._viewNode.SpriteDealer:stopAllActions()self._viewNode.SpriteDealer:runAction(cc.RepeatForever:create(cc.Animate:create(animation)))end end

該動畫有24張圖片循環播放來展現,每張圖片時間間隔為1/12s(animation:setDelayPerUnit(1 / 12))。循環結束后,動畫回到第一幀圖片(animation:setRestoreOriginalFrame(true))。為了防止動畫播放出現紊亂,故播放之前都要對其進行進行停止操作(self._viewNode.SpriteDealer:stopAllActions())。由于動畫的播放時基于圖片的循環,所以在此我們選用精靈,通過對精靈的背景圖片進行更換來達到動畫的效果(self._viewNode.SpriteDealer:runAction)。動畫實現無線循環播放(cc.RepeatForever:create())。
用這種方式進行的動畫創建,會出現當我們進行場景切換時,動畫停留在24幀動畫中的某一幀,這時候在進行動畫播放時會出現動畫的閃爍(因為動畫會從停留的那一幀直接跳轉到第一幀),在此的解決方案就是在對動畫進行停播的時候,直接讓其回到第一幀,就可以完美解決上述問題。

--停止動畫的播放,讓動畫回到第一幀 function MainCtrl:stopDealerAnimation()local dealerSprite = self._viewNode.SpriteDealerif dealerSprite thendealerSprite:stopAllActions()local spriteFrame = self:getSpriteFrame("res/hall_dealerPic/dealer1.png")if spriteFrame thendealerSprite:setSpriteFrame(spriteFrame)endend end --函數實現:根據傳入的圖片,生成指定的精靈 function self:getSpriteFrame(resName)local resSprite = cc.Sprite:create(resName)local width = resSprite:getContentSize().widthlocal height = resSprite:getContentSize().heightif resSprite thenlocal rect = cc.rect(0, 0, width, height)local resFrame = cc.SpriteFrame:create(resName, rect)if resFrame thenreturn resFrameendendreturn nil end

總結

以上是生活随笔為你收集整理的lua cocos 创建动画的几种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。