texturepacker是一个碎图打包器,可以把小图合并成一张大图,并对大图做优化。我用的是特别版(只好用xx版了,

不然导出的图片会被变成红色),网盘下载,文件会提示有毒,我也是在网上找的,其实是补丁,放心用。把补丁放到

安装后的bin目录,并添加到杀毒软件信任名单,或者先关闭杀毒软件,运行补丁。

碎图打包只需把包含图片的文件夹拖到右边的Sprite就可以了。

注意导出格式选择如下图,点击工具栏上的Publishe就可以了,其它的默认。

这会导出一个lua文件和一个合成后的png图片,lua文件里记载了碎图在大图里位置等信息。

我稍微封装为imgSheet类,可以载入多个lua和png图片,并支持动画,需要注意的是,没有

做错误检查,代码如下:

  1. imgSheet={frames={},anims={}}
  2.  
  3. --添加texturepacker导出的lua和大图,imgfile要完整路径和后缀
  4. function imgSheet.addSheet(luafile,imgfile)
  5.  
  6. local t=dofile(luafile)
  7.  
  8. local frameIndex=t.frameIndex
  9. local frames = t.sheet.frames
  10.  
  11. for k,v in pairs(frameIndex) do
  12. frames[v]["sheetFile"]=imgfile --保存碎图对应的大图名
  13. frames[v]["show"]=true --是否在屏幕上显示
  14. imgSheet.frames[k]=frames[v]
  15.  
  16. end
  17.  
  18. end
  19.  
  20. --file碎图文件名,不要后缀,后面的参数与love.graphics.draw相同
  21. function imgSheet.drawFrame(file,x, y, r, sx, sy, ox, oy, kx, ky )
  22. local frame = imgSheet.frames[file]
  23. local image = love.graphics.newImage(frame.sheetFile)
  24. local quad = love.graphics.newQuad(frame.x, frame.y, frame.width, frame.height, image:getWidth(), image:getHeight())
  25. if frame.show then
  26. love.graphics.draw(image, quad,x, y, r, sx, sy, ox, oy, kx, ky )
  27. end
  28. end
  29. --获取碎图对应的数据,file不要后缀,以下函数也是如此
  30. function imgSheet.getFrame(file)
  31. return imgSheet.frames[file]
  32. end
  33. --删除一帧图片,只是不在屏幕上显示
  34. function imgSheet.removeFrame(file)
  35. imgSheet.frames[file].show=false
  36. end
  37.  
  38. --绘制动画 st文件名的起始序号,ed终止序号,tm动画每帧绘制时间
  39. --之后的参数同love.graphics.draw
  40. function imgSheet.drawAnim(file,st,ed,tm,x, y, r, sx, sy, ox, oy, kx, ky)
  41. if not imgSheet.anims[file] then
  42. --idx当前索引,state状态:1正常,0暂停,-1停止 ,-2删除
  43. imgSheet.anims[file]={tm=tm,st=st,ed=ed,dt=,idx=st,state=}
  44. end
  45. local anim = imgSheet.anims[file]
  46.  
  47. if anim.state== then
  48. anim.dt=anim.dt+love.timer.getDelta( )
  49. if anim.dt>=anim.tm then
  50. anim.dt=
  51. anim.idx=anim.idx+
  52. if anim.idx>anim.ed then
  53. anim.idx=anim.st
  54. end
  55. end
  56. end
  57. if anim.state~=- then
  58. imgSheet.drawFrame(file..anim.idx,x, y, r, sx, sy, ox, oy, kx, ky )
  59. end
  60. end
  61. --暂停动画
  62. function imgSheet.pauseAnim(file)
  63. local anim = imgSheet.anims[file]
  64. if anim then
  65. anim.state=
  66. end
  67. end
  68. --恢复动画
  69. function imgSheet.resumeAnim(file)
  70. local anim = imgSheet.anims[file]
  71. if anim then
  72. if anim.state== then
  73. anim.state=
  74. end
  75. end
  76. end
  77. --停止动画
  78. function imgSheet.stopAnim(file)
  79. local anim = imgSheet.anims[file]
  80. if anim then
  81. anim.state=-
  82. end
  83. end
  84. --删除动画
  85. function imgSheet.removeAnim(file)
  86. local anim = imgSheet.anims[file]
  87. if anim then
  88. anim.state=-
  89. end
  90. end
  91. return imgSheet

完整的工程在网盘下载,碎图在imgs目录下。

love2d教程32--碎图打包器texturepacker的更多相关文章

  1. 用 Love2D 实现法线贴图的例程(到最新版本 0.10.1)

    用 Love2D 实现法线贴图的例程(到最新版本 0.10.1) 概述 一般来说, 复杂的光照模型会被用在 3D 游戏中, 以产生逼真的效果, 不过也有些开发者研究出一些代码可以在 2D 游戏中使用这 ...

  2. Adobe Photoshop CC 2018 v19.0 简体中文正式版下载安装破解(附注册机+破解教程) 32/64位(安装破解注意事项是什么)

    Adobe Photoshop CC 2018 v19.0 简体中文正式版下载安装破解(附注册机+破解教程) 32/64位(安装破解注意事项是什么) 一.总结 一句话总结:下载安装破解教程文中都有,需 ...

  3. Quick-Cocos2d-x Lua脚本加密打包器

    准备开新项目了,在寻找合适的框架,后来就发现了Quick-Cocos2d-x这玩意. 别说,还挺好使.之后一步步研究,发现Lua不加密是不行的. 加密的方法在这里. 因为在做版本更新的时候,一般大家都 ...

  4. webpack前端模块打包器

    webpack前端模块打包器 学习网址: https://doc.webpack-china.org/concepts/ http://www.runoob.com/w3cnote/webpack-t ...

  5. webpack----js的静态模块打包器

    webpack----js的静态模块打包器 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 webpack 是一个现代 J ...

  6. Webpack - CommonJs & AMD 模块打包器

    Webpack 是一个 CommonJs & AMD 模块打包器.可以把你的 JavaScript 代码分离为多个包,在需要的时候进行加载,支持预处理文件,例如 json, jade, cof ...

  7. [转]Android Studio系列教程六--Gradle多渠道打包

    转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...

  8. Android Studio系列教程六--Gradle多渠道打包

    Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...

  9. [SQL基础教程] 3-2 对表进行分组

    [SQL基础教程] 3-2 对表进行分组 GROUP BY SELECT <列名1>,<列名2>,... FROM <表名> GROUP BY <列名1> ...

随机推荐

  1. 如何高效的将excel导入sqlserver?

    大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClie ...

  2. PHP防抓取数据curl 解决方法

    1.使用Snoopy或curl传搜索引擎爬虫的USERAGENT值. 查看搜索引擎爬虫的USERAGENT值:http://www.cnblogs.com/grimm/p/5068092.html ( ...

  3. VS2012利用Wix打包问题

    在用VS2012打包的时候,忽然发现没有像VS2010一样可以本地打包的项目模板,于是找了N多资料后,发现现在微软在推荐用WIX打包. 在折腾WIX打包生成界面的时候,遇到了一个很纠结的问题. Unr ...

  4. Tomcat 关闭时报错

    最近tomcat走普通的关闭方式无法正常关闭,会报一些Error,用的是Tomcat7,据说是Tomcat7在关闭的时候加了一些检查线程泄漏内存泄露的东西 总结起来,在我项目中有这么几个原因会导致关闭 ...

  5. GNOME下也是Alt+F2,输入gnome-terminal

    如果桌面有terminal 的话 ,直接用上下键就可以了   Alt + F1 类似Windows下的Win键,在GNOME中打开”应用程序”菜单(Applications) Alt + F2 类似W ...

  6. mysql索引二

    理解MySQL——索引与优化 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优 的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储1 ...

  7. Android--全局变量 很好很强大

    As you know, each Activity is also a Context, which is information about its execution environment i ...

  8. Bootstrap 的模态框类

    事件类型 描述 show.bs.modal show 方法调用之后立即触发该事件.如果是通过点击某个作为触发器的元素,则此元素可以通过事件的relatedTarget 属性进行访问. shown.bs ...

  9. List多个字段标识过滤

    class Program {  public static void Main(string[] args) { List<T> list = new List<T>(); ...

  10. C#:加载Excel(待补充)

    string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + &qu ...