`

Cocos2d-x Lua中实例:帧动画使用

阅读更多

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

帧动画实例

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

 

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

    这本书的源码提供了丰富的实例和练习,帮助读者更好地理解和掌握Cocos2d-x与Lua的结合使用。 源码是学习编程的重要资源,特别是对于游戏开发来说,通过实际代码可以深入理解引擎的工作原理和Lua在游戏逻辑中的应用...

    Cocos2d-x实战lua卷

    这本书的《Cocos2d-x实战Lua卷.pdf》将通过丰富的实例和详细解释,帮助读者掌握使用lua进行Cocos2d-x游戏开发的技能,无论是初学者还是有经验的开发者,都能从中获得宝贵的知识和实践经验。对于想要提升游戏开发能力...

    cocos2d-x二维码控件

    DrawNode是Cocos2d-x中的一个类,允许开发者在屏幕上绘制2D图形,如线条、矩形、椭圆等。为了显示二维码,我们需要以下步骤: 1. 创建一个DrawNode实例,作为二维码的画布。 2. 使用libqrencode的API将数据编码为...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    6. **音频和音乐**:介绍如何在Cocos2d-x中播放背景音乐和音效,以及音乐的控制和管理。 7. **网络与存储**:讨论如何进行网络通信,如下载更新、保存和读取游戏数据。 8. **性能优化**:提供关于代码优化、内存...

    cocos2d-x 游戏实例源码打包

    通过分析和学习这些源码,开发者可以深入理解cocos2d-x的底层机制,包括场景管理、精灵(Sprite)绘制、粒子系统、物理引擎、动画帧序列、声音播放、用户输入处理等核心功能。同时,还可以了解到游戏状态管理、碰撞...

    关东升-Cocos2d-x实战:Lua卷

    在Cocos2d-x中集成Lua,不仅可以提高开发效率,还能降低内存占用,这对于移动设备上的游戏尤为重要。《Cocos2d-x实战:Lua卷》这本书主要介绍了如何利用Lua进行游戏开发,并且涵盖了从基础到高级的各种主题,对于...

    cocos2d-lua整合到ios工程.zip

    在iOS平台上开发游戏时,有时候会使用到Cocos2d-x框架,而为了实现更高效、更便捷的编程,开发者可能会选择使用Lua作为脚本语言。"cocos2d-lua整合到ios工程.zip"这个压缩包文件提供了一个将Cocos2d-lua集成到原生...

    cocos2d-x的spine动画demo

    在Cocos2d-x中使用Spine动画,你需要做以下几步: 1. **导入Spine库**:首先,你需要在Cocos2d-x项目中添加Spine的C++ SDK。这通常涉及下载SDK,将其解压并将其头文件和库文件链接到你的项目中。 2. **加载Spine...

    Cocos2d-x之Lua核心编程_配套代码

    在Cocos2d-x中使用Lua,可以显著提升开发效率,降低项目维护难度。 在Cocos2d-x中,Lua与C++的交互主要依赖于tolua++这个工具,它能够将Lua脚本编译为C++可调用的函数,使得开发者可以在Lua中编写游戏逻辑,而在C++...

    Cocos2d-X游戏源码大合集.rar

    这个“Cocos2d-X游戏源码大合集.rar”文件显然包含了大约三十个使用Cocos2d-X开发的游戏实例源代码,对于学习和理解Cocos2d-X游戏开发的原理、技巧以及实践应用具有极大的价值。 1. **Cocos2d-X基础**: Cocos2d-X...

    基于cocos2d-2.0-x-2.0.3的游戏实例魔塔(win版)

    2. **精灵与动画**:Sprite是cocos2d-x中表示游戏对象的基本元素,可以承载图片资源。在魔塔中,角色、怪物等都可以通过精灵来表示。动画可以通过连续的精灵帧实现,例如角色行走、攻击等动作。 3. **物理引擎碰撞...

    cocos2d-x游戏实例-纵版射击游戏

    【cocos2d-x游戏实例-纵版射击游戏】是一个基于Cocos2d-x框架开发的垂直滚动射击游戏,这种类型的游戏通常被称为“飞行射击”或“弹幕射击”。Cocos2d-x是一个广泛使用的开源游戏开发框架,它支持多平台开发,包括...

    cocos2d-x 实例源码

    在游戏开发领域,cocos2d-x是一个广泛使用的开源跨平台2D游戏引擎,它允许开发者使用C++、Lua或JavaScript进行游戏编程,并能在iOS、Android、Windows等多个平台上运行。本实例“愤怒的松鼠”是基于cocos2d-x框架...

    cocos2d-Lua示例demo源码踩虫子-MOD美国大兵

    1. **cocos2d-Lua引擎**:cocos2d-Lua是cocos2d-x框架的一个分支,它将强大的cocos2d-x图形库与易于学习和使用的Lua脚本语言相结合,使得开发者能够快速构建2D游戏。在本项目中,所有的游戏逻辑、场景管理、对象交互...

    cocos2d-x 3.x游戏开发实战光盘

    通过学习和实践这个光盘中的内容,开发者可以掌握cocos2d-x 3.x的核心概念,如场景管理、精灵动画、粒子系统、触摸事件处理、游戏逻辑设计等,从而能够独立地开发出高质量的2D游戏。对于希望提升游戏开发技能或转行...

    精通COCOS2D-X游戏开发进阶卷

    2. **渲染引擎**:Cocos2d-x使用基于OpenGL的渲染系统,能高效处理2D图形,提供动画、粒子效果、物理引擎等游戏必备功能。 3. **资源管理**:它包含了对图片、音频、字体等资源的管理工具,简化了资源加载和释放的...

    cocos2d-x实战_lua卷

    此外,还会介绍如何在Cocos2d-x中集成Lua脚本,使用Lua绑定C++代码,实现游戏逻辑。通过学习这部分内容,开发者可以灵活地使用Lua进行游戏逻辑设计和优化。 在游戏开发过程中,UI设计和事件处理是关键部分。书中的...

    cocos2dx lua核心编程(第二版)配套代码

    2. **Lua语言基础**:Lua具有简洁的语法和强大的元编程能力,是Cocos2d-x中常用的脚本语言。学习配套代码时,需要理解Lua的基本数据类型(如数字、字符串、表、布尔值和函数)、控制结构(if-else、for、while等)、...

    cocos2d-x3.0导出自定义类到lua的测试源文件

    《cocos2d-x3.0中自定义类与Lua交互的深度解析》 在cocos2d-x 3.0版本中,开发者们经常需要将C++自定义的类暴露给Lua脚本使用,以便在游戏中实现更复杂的逻辑和交互。这篇文档将详细解释如何将C++自定义类导出到Lua...

    Cocos2d-x实战C++卷 关东升著 完整版含目录

    Cocos2d-x框架中使用C++进行编程可以利用C++的高级特性和性能优势,从而编写出更加高效、灵活的游戏代码。 3. 关东升 关东升是一位资深的软件开发者、技术作家。他出版的《Cocos2d-x实战C++卷》一书是专门为游戏...

Global site tag (gtag.js) - Google Analytics