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

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

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

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

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

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

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

做错误检查,代码如下:

imgSheet={frames={},anims={}}

--添加texturepacker导出的lua和大图,imgfile要完整路径和后缀
function imgSheet.addSheet(luafile,imgfile) local t=dofile(luafile) local frameIndex=t.frameIndex
local frames = t.sheet.frames for k,v in pairs(frameIndex) do
frames[v]["sheetFile"]=imgfile --保存碎图对应的大图名
frames[v]["show"]=true --是否在屏幕上显示
imgSheet.frames[k]=frames[v] end end --file碎图文件名,不要后缀,后面的参数与love.graphics.draw相同
function imgSheet.drawFrame(file,x, y, r, sx, sy, ox, oy, kx, ky )
local frame = imgSheet.frames[file]
local image = love.graphics.newImage(frame.sheetFile)
local quad = love.graphics.newQuad(frame.x, frame.y, frame.width, frame.height, image:getWidth(), image:getHeight())
if frame.show then
love.graphics.draw(image, quad,x, y, r, sx, sy, ox, oy, kx, ky )
end
end
--获取碎图对应的数据,file不要后缀,以下函数也是如此
function imgSheet.getFrame(file)
return imgSheet.frames[file]
end
--删除一帧图片,只是不在屏幕上显示
function imgSheet.removeFrame(file)
imgSheet.frames[file].show=false
end --绘制动画 st文件名的起始序号,ed终止序号,tm动画每帧绘制时间
--之后的参数同love.graphics.draw
function imgSheet.drawAnim(file,st,ed,tm,x, y, r, sx, sy, ox, oy, kx, ky)
if not imgSheet.anims[file] then
--idx当前索引,state状态:1正常,0暂停,-1停止 ,-2删除
imgSheet.anims[file]={tm=tm,st=st,ed=ed,dt=,idx=st,state=}
end
local anim = imgSheet.anims[file] if anim.state== then
anim.dt=anim.dt+love.timer.getDelta( )
if anim.dt>=anim.tm then
anim.dt=
anim.idx=anim.idx+
if anim.idx>anim.ed then
anim.idx=anim.st
end
end
end
if anim.state~=- then
imgSheet.drawFrame(file..anim.idx,x, y, r, sx, sy, ox, oy, kx, ky )
end
end
--暂停动画
function imgSheet.pauseAnim(file)
local anim = imgSheet.anims[file]
if anim then
anim.state=
end
end
--恢复动画
function imgSheet.resumeAnim(file)
local anim = imgSheet.anims[file]
if anim then
if anim.state== then
anim.state=
end
end
end
--停止动画
function imgSheet.stopAnim(file)
local anim = imgSheet.anims[file]
if anim then
anim.state=-
end
end
--删除动画
function imgSheet.removeAnim(file)
local anim = imgSheet.anims[file]
if anim then
anim.state=-
end
end
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. netty-socketio之BroadcastOperations

    最近用到了netty-socketio.之前对这个了解比较少,对netty了解比较多,看代码的时候,发现二者不是一个东西(废话). 主要让我比较惊讶的区别是BroadcastOperations这个东 ...

  2. winrar X64 win10 破解

    破解方法, win10 64位 复制下面内容到 RarReg.key 文件 RAR registration datawncnUnlimited Company LicenseUID=1b064ef8 ...

  3. CSS如何实现自定义鼠标应用到整个网页

    在CSS区把body改为*即可.但是注意Firefox不支持ani和cur文件,如果您一定想使用ani和cur的指针,可以试着将它改名为.gif文件.实际测试如果改为gif则IE也不支持了.

  4. 稍复杂的ionic例子:显示一个列表,并且允许点击进入列表项

    这个例子,按照MVC的方式进行了分层,下面是代码: demo3.htm <!DOCTYPE html> <html ng-app="app"> <he ...

  5. ios开发-调用系统自带手势

    在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIGestureR ...

  6. Nginx搭建flv mp4流媒体服务器[转]

    Nginx搭建flv mp4流媒体服务器 作者:二蛋 时间:December 1, 2014 分类:Note 环境:Centos 6.4 32bit 一.安装依赖包 1.安装zlib wget htt ...

  7. Unity开发 手机平台播放影片

    http://www.cnblogs.com/zhaoqingqing/p/3401747.html 截止到目前的Unity4.2版本,要在手机平台上播放影片,有两种方法: 使用Unity自带的Mov ...

  8. 我们为什么在移动端项目中选择jQuery而不是Zepto

    1.文件大小比较 首先从cnd上(http://www.bootcdn.cn/)下载jquery和zepto. jquery下载的是2.2.4版本压缩: zepto下载的是是1.20压缩版本: 二个文 ...

  9. [odroid-pc] ubuntu12.04 64bit Android4.0.3 源码编译报错及解决的方法

    第一个错误:         host Executable: cmu2nuance (out/host/linux-x86/obj/EXECUTABLES/cmu2nuance_intermedia ...

  10. 后台管理-基于 Bootstrap 开发的网站后台管理面板

    Bootstrap 开发框架真的很强大,今天推荐几个非常不错的基于 Bootstrap 开发的网站后台管理面板,全部都是响应式布局,细节做得都很不错.可以搜索keenthemes. Metronic ...