客户端绘图接口lua层功能,主要在SDL全局表上。
辅助类,Color、Point、Rect、Points、Rects介绍
SDL.Color -> 代表了RGB颜色类
1. local c = SDL.Color() -> 构造一个位初始化的Color对象
2. c.r=255; c.g=255; c.b=255; c.a=255; -> 给颜色对象赋值,r 红,g绿,b蓝,a 透明度,255位不透明,0位完全透明。这里定义了一个不透明的白色。
3. local c = SDL.Color.new(r,g,b,a) -> 直接用数值生成一个颜色对象,数值范围都是0到255
SDL.Point -> 点类
1. local p = SDL.Point() -> 构造一个位初始化的点对象
2. p.x=100; c.y=200; -> 给点对象赋值
3. local p = SDL.Point.new(x,y) -> 直接用数值生成一个点对象
SDL.Rect -> 举行区域
1. local r = SDL.Rect() -> 构造一个位初始化的举行对象
2. r.x=100; r.y=200; r.w=50; r.h=30; -> 给举行对象赋值,x,y举行左上角坐标所在点,w 举行宽度,h 举行高度
3. local r = SDL.Rect.new(x,y,w,h) -> 直接用数值生成一个举行对象
SDL.Points -> 点对象的数组集合
1. local ps = SDL.Points() -> 构造一个一个空的点数组集合
2. ps:push(p) -> 将点对象放进点数组集合,参数p是生成的点对象
SDL.Rects -> 举行对象的数组集合
1. local rs = SDL.Rects() -> 构造一个一个空的举行数组集合
2. rs:push(r) -> 将举行对象放进举行数组集合,参数r是生成的举行对象
创建各种图形对象,这些方法都在SDL.mgr.getInstance()返回的管理类上
1. SDL.mgr.getInstance():createPoint(x,y,c) -> 在屏幕上画一个像素点,x,y坐标,c 颜色对象,return返回值 Node 创建的显示对象
2. SDL.mgr.getInstance():createLine(x1,y1,x2,y2,c) -> 在屏幕上画一个像素线,x1,y1 直线的起点,x2,y2 直线的终点,c 颜色对象,return返回值 Node 创建的显示对象
3. SDL.mgr.getInstance():createRect(x,y,w,h,fill,c) -> 在屏幕上画一个举行,x,y 举行的左上角坐标,w,h 举行的宽度和高度,fill 为true则用c颜色填充整个举行,false,则用c颜色画举行的边框,c 颜色对象,return返回值 Node 创建的显示对象
4. SDL.mgr.getInstance():createPoints(points,c) -> 在屏幕上画多个像素点,points 是点集合对象,包含多个点,c 颜色对象,return返回值 Node 创建的显示对象
5. SDL.mgr.getInstance():createLines(points,c) -> 在屏幕上画多条直线,他们根据点的顺序,首尾相连,必须有两个点在点数组集合中,否则报错,points 点数组集合,必须大于等于2,c 颜色对象,return返回值 Node 创建的显示对象
- SDL.mgr.getInstance():createRects(rects,fill,c) -> 在屏幕上画多个举行,rects 举行数组集合,fill 为true则用c颜色填充整个举行,false,则用c颜色画举行的边框,c 颜色对象,return返回值 Node 创建的显示对象
- SDL.mgr.getInstance():createImage(path,x,y,w,h) -> 在屏幕上显示一张图片,path 图片所在资源路径,支持jpg\png等,x,y 显示的图片的左上角位置,w,h要显示的目标长宽,弱图片尺寸大小和显示的举行参数不符合,则会缩放图片,适应给出的坐标举行大小,return返回值 Node 创建的显示对象
- SDL.mgr.getInstance():createText(text,x,y,c) -> 在屏幕上显示一行文本,text 要显示的文本,支持中文,x,y 显示文本的左上角位置,c 颜色对象,return返回值 Node 创建的显示对象
- SDL.mgr.getInstance():createLayer(x,y,w,h,c) -> 创建容器面板,该面板可以添加各种子对象,也可以嵌套面板,x,y,w,h和举行一样含义,他只能用颜色填充背景色,c 颜色对象,return返回值 Node 创建的显示对象
将显示对象放入屏幕,SDL.mgr.getInstance()返回的对象其实是顶层节点对象,createLayer返回的对象是容器对象,他们拥有同样的管理层次的方法。
为了方便描述以下吧顶层对象叫做mgr,吧createLayer创建的面板对象叫做layer,吧其他创建的显示对象称作node节点对象。
1. mgr:add(o,z) 和 layer:add(o,z) -> 将显示对象放入面板,o 显示对象,也可以是显示面板,当显示对象进入他的面板或者顶层面板时,他的坐标则相对他的面板所在相对坐标偏移;z 同一层的显示对象,绘制的时候的先后顺序,数字越小,则优先级靠后,后绘制的图像覆盖之前绘制的图像。return返回值该显示对象的唯一ID。例如:
1 2 3 4 5
| local mgr = mgr.getInstance() -- 保存顶层管理对象 local layer = mgr:createLayer(10,10,100,30,SDL.Color.new(0,0,255,255)) -- 创建了一个蓝色背景的容器面板 local text = mgr:createText("",10,8,SDL.Color.new(0,0,0,255)) mgr:add(layer,0) -- 将面板放进顶层 layer:add(text,0) -- 将文本放进面板
|
这个时候的坐标面板layer则是相对顶层mgr00点,则文字text相对他的面板坐标layer 1010。
2. mgr:remove(id) 和 layer:remove(id) -> 删除该容器里的显示对象,id是add返回的唯一标识符,也可以通过创建的Node的对象的id属性获取。
3. mgr:get(id) 和 layer:get(id) -> 通过ID获取到该容器里的指定显示对象Node
4. mgr:clear() 和 layer:clear() --> 清空容器内的所有显示元素
其他有关信息
- 屏幕当前逻辑宽度和高度像素尺寸可以通过 SDL.dwidth 和 SDL.dheight 获得,此属性是只读属性,请不要赋值,目前为720*1280,不确定将来会更改。
- 屏幕当前分辨率尺寸可以通过 SDL.width 和 SDL.height 获得,此属性是只读属性。
- 每次开始游戏或者结束游戏可以调用 mgr:clear() 清空所有显示
- 在add方法的第二个参数请不要选择小于0的数值,避免覆盖系统的菜单显示和对话框等内容。
- 字体现在默认用的是微软雅黑,弱需要调整字体,等下一个接口。