下面我们通过一个实例介绍一下帧动画的使用,这个实例如下图所示,点击Go按钮开始播放动画,这时候播放按钮标题变为Stop,点击Stop按钮可以停止播放动画。

帧动画实例

下面我们再看看具体的程序代码,首先看一下看GameScene.lua文件,它的代码如下:

  1. local isPlaying = false -- 播放标识                                                                                                      ①
  2. local size =cc.Director:getInstance():getWinSize()
  3. … …
  4. -- create layer
  5. function GameScene:createLayer()
  6. local layer = cc.Layer:create()
  7. local spriteFrame  = cc.SpriteFrameCache:getInstance()
  8. spriteFrame:addSpriteFramesWithFile("run.plist")
  9. local bg =cc.Sprite:createWithSpriteFrameName("background.png")
  10. bg:setPosition(cc.p(size.width/2, size.height/2))
  11. layer:addChild(bg)
  12. local sprite = cc.Sprite:createWithSpriteFrameName("h1.png")
  13. sprite:setPosition(cc.p(size.width/2, size.height/2))
  14. layer:addChild(sprite)
  15. --toggle菜单
  16. local goSprite = cc.Sprite:createWithSpriteFrameName("go.png")
  17. local stopSprite = cc.Sprite:createWithSpriteFrameName("stop.png")
  18. local goToggleMenuItem = cc.MenuItemSprite:create(goSprite, goSprite)
  19. local stopToggleMenuItem = cc.MenuItemSprite:create(stopSprite,stopSprite)
  20. local toggleMenuItem = cc.MenuItemToggle:create(goToggleMenuItem,
  21. stopToggleMenuItem)
  22. toggleMenuItem:setPosition(cc.Director:getInstance():convertToGL(cc.p(930,540)))
  23. local mn = cc.Menu:create(toggleMenuItem)
  24. mn:setPosition(cc.p(0, 0))
  25. layer:addChild(mn)
  26. local function OnAction(menuItemSender)
  27. if not isPlaying then
  28. --///////////////动画开始//////////////////////
  29. local animation =cc.Animation:create()                                                                         ②
  30. for i=1,4 do
  31. local frameName =string.format("h%d.png",i)                                                       ③
  32. cclog("frameName =%s",frameName)
  33. local spriteFrame = spriteFrame:getSpriteFrameByName(frameName)               ④
  34. animation:addSpriteFrame(spriteFrame)                                                                 ⑤
  35. end
  36. animation:setDelayPerUnit(0.15)          --设置两个帧播放时间                      ⑥
  37. animation:setRestoreOriginalFrame(true)    --动画执行后还原初始状态           ⑦
  38. local action =cc.Animate:create(animation)                                                         ⑧
  39. sprite:runAction(cc.RepeatForever:create(action))                                                       ⑨
  40. --//////////////////动画结束///////////////////
  41. isPlaying = true
  42. else
  43. sprite:stopAllActions()                                                                                                      ⑩
  44. isPlaying = false
  45. end
  46. end
  47. toggleMenuItem:registerScriptTapHandler(OnAction)
  48. return layer
  49. end
  50. return GameScene

上述代码第①行是声明一个布尔变量isPlaying,用来保存播放状态,true时候说明正在播放,false时候说明停止播放。

第②行代码是创建一个Animation对象,它是动画对象,然后我们要通过循环将各个帧图片放到Animation对象中。第③行是获得帧图片的文件名,string.format("h%d.png",i)是对字符串进行格式化。第④行代码是通过帧名创建精灵帧对象,第⑤行代码把精灵帧对象添加到Animation对象中。

第⑥行代码是animation:setDelayPerUnit(0.15)是设置两个帧播放时间,我们这个动画播放是4帧。第⑦行代码animation:setRestoreOriginalFrame(true)是动画执行完成是否还原到初始状态。第⑧行代码是通过一个Animation对象创建Animate对象,第⑨行代码cc.Animate:create(animation)是执行动画动作,无限循环方式。

第⑩行代码sprite:stopAllActions()停止所有的动作。

更多内容请关注最新Cocos图书《Cocos2d-x实战:Lua卷——Cocos2d-lua开发》

本书交流讨论网站:http://www.cocoagame.net

欢迎加入Cocos2d-x技术讨论群:257760386

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com

《Cocos2d-x实战 Lua卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11659697.html

欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息

Cocos2d-x Lua中实例:帧动画使用的更多相关文章

  1. 让 CXK 来教你实现游戏中的帧动画(上)

    一款游戏除了基本功能之外,还需要给玩家更多视觉上的刺激,这个时候就需要用特效来装饰.本文就将介绍 Cocos Creator 的动画系统,除了标准的位移.旋转.缩放动画和序列帧动画以外,这套动画系统还 ...

  2. 关于Unity中的帧动画组件的编写

    一.帧动画 1: 美术准备好一个连续动作的离散图片;2: 程序在准确的时间来切换这个图片;3: 优点: 简单,速度快; 缺点:资源占用相对过大; 二.frame_anim组件编写 1: 代码里面强制要 ...

  3. Android中的帧动画与补间动画的使用

    前言 在日常开发中,我们有时候须要一些好看的动画效果,这时能够充分利用Android提供的这几种动画来实现. Android提供了3种类型的动画: 补间动画:补间动画能够应用于View,让你能够定义一 ...

  4. Cocos2d-x Lua中实例:特效演示

    下面我们通过一个实例介绍几个特效的使用,这个实例如下图所示,上图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜 ...

  5. Java乔晓松-android中的帧动画FrameByFrame

    先看效果后上代码: 动画开始---- 动画切换的界面---- 动画播放完毕后的跳转界面----- 重要的方法: imageView.setBackgroundResource(R.anim.frame ...

  6. Cocos2d-x Lua中帧动画

    帧动画就是按一定时间间隔.一定的顺序.一帧一帧地显示帧图片.我们的美工要为精灵的运动绘制每一帧图片,因此帧动画会由很多帧组成,按照一定的顺序切换这些图片就可以了. 在Cocos2d-x Lua中播放帧 ...

  7. 逐帧动画(Frame-by-frame Animations)

    1.这一类动画可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示. xml定义方法 <animation-list xmlns:android=" ...

  8. android 通过帧动画方式播放Gif动画

    注意:经过本人测试,这个方法很耗内存, 图片一多就崩了.慎用 <1>用工具(photoshop或者FireWorks)将GIF动画图片分解成多个GIF静态图片,然后保存在res\drawa ...

  9. Android--逐帧动画FrameAnimation

    前言 开门见山,本篇博客讲解一下如何在Android平台下播放一个逐帧动画.逐帧动画在Android下可以通过代码和XML文件两种方式定义,本篇博客都将讲到,最后将以一个简单的Demo来演示两种方式定 ...

随机推荐

  1. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何把FBD功能块转换成ST语言

    假如我定义了一个MC_Power的标准功能块,我想知道它对应的ST语言   在MAIN(ST语言界面下)右击,Input Assistant,然后找到Standard Function Blocks, ...

  2. NSight统计数据的颜色,缩写意义是什么?来自NV Jeff Kiel 比较官方的解释!

    结合这个图示来看:https://dl.dropboxusercontent.com/u/32077444/nsight.pdf 1) The bars you see in the Summary ...

  3. Android or java https ssl exception

    1.http://www.trinea.cn/android/android-java-https-ssl-exception-2/ 2.http://www.eoeandroid.com/threa ...

  4. WP8滑动条(Slider)控件的使用

    1. <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinit ...

  5. Atitit.导出excel报表的设计与实现java .net php 总结

    Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...

  6. UML类图详解_关联关系_多对多

    在关联关系中,很多情况下我们的多重性并不是多对一或者一对多的,而是多对多的. 不过因为我们要考虑里面的导航性,如果直接搞的话就是需要去维护两群对象之间多对多的互指链接,这就十分繁杂且易错.那么我们怎么 ...

  7. gsub函数

    gsub(r, s [, t])    For each substring matching the regular expression r in the string t, substitute ...

  8. python自动生成文件头

    "auto add pyhton header --start autocmd BufNewFile *.py 0r ~/.vim/vim_template/vim_python_heade ...

  9. [转]从输入url到页面加载完成的过程中都发生了什么事情

    第一个问题:从输入 URL 到浏览器接收的过程中发生了什么事情? 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器 ...

  10. discuz论坛模板文件目录

    公共模板文件夹 ./template/default/common/ common.css 公共CSS文件 faq.htm 帮助模板文件 footer.htm 系统总底部模板 footer_ajax. ...