博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
love2d教程7--绘图顺序
阅读量:6332 次
发布时间:2019-06-22

本文共 1000 字,大约阅读时间需要 3 分钟。

zorder用来控制绘图的先后顺序,可惜love2d里没有zorder,我们需要自己

控制绘图的先后顺序,即在love.draw()回掉函数中的先后顺序.可是这带来

了不便当有很多绘图动作时,代码太多便弄不清先后了.

我们可以自己增加一个z顺序的函数,每次添加绘图对象时,便把顺序设置好.

这里我把zorder的取值范围设为0.0--1.0,值越下越靠近屏幕,值越大越远

离屏幕,可以把zorder视为绘图对象离屏幕的距离.

 

下面我们来把下面三张图合成为以幅完整的图:

图片来自

下面是显示效果:左边的使用zorder,右边的不按顺序.

代码很简单,如下:

main.lua

local zorder={}--z的取值越小越靠近屏幕,默认值0function setZ(drawabl, z)    --z的默认值为0    z=z or 0    if z<=1 and z>=0 then            table.insert(zorder,{drawabl,z})    else            print("zorder must between 0 and 1")    end    table.sort(zorder, function(a,b) return a[2]>b[2] end)endfunction love.load()    imgs={}    for i=1,3 do        table.insert(imgs,love.graphics.newImage("assets/img" .. i .. ".png"))    endendfunction love.draw()    --直接绘图,不注意顺序    love.graphics.draw(imgs[2],400,200)    love.graphics.draw(imgs[1],400,200)    love.graphics.draw(imgs[3],400,200)    setZ(imgs[2],0.2)    setZ(imgs[1],0.3)    setZ(imgs[3],0.1)    for _,v in ipairs(zorder) do        love.graphics.draw(v[1],200,200)    endend

代码

转载地址:http://wlnoa.baihongyu.com/

你可能感兴趣的文章
OSG程序设计之Hello World 2.0
查看>>
计算机网络之---物理层
查看>>
Jdk的java.util.concurrent包中已经实现了一个Semaphore类(信号量的用法),主要用于多线程情况下控制某个方法的并发数...
查看>>
[Axapta]"Journal name may not be changed when vouchers have been created"的问题
查看>>
2014025654《嵌入式系统程序设计》第二周学习总结
查看>>
三步学好Java,掌握Java编程思想
查看>>
获取windows版本信息的做法
查看>>
chrome developer tool—— 断点调试篇
查看>>
[100_Python学习笔记]001_Python环境安装配置(Windows 7)
查看>>
关于 platform的文章
查看>>
OC中自定义属性与系统属性冲突解决方法
查看>>
关于堆栈的详细讲解
查看>>
Kafka查看topic、consumer group状态命令
查看>>
Excel导出双sheet表格(poi)
查看>>
汇编实验三zxt
查看>>
oracle dblink使用
查看>>
A1006
查看>>
算法第四章上机实践报告
查看>>
程序员常见的编码和转义
查看>>
DynamicCocoa:滴滴 iOS 动态化方案的诞生与起航
查看>>