测试

GameTop

 找回密码
 立即注册
Cmgame Maker-0.9.1
LuaJit + OpenGL,提取码:2m1n
讨论 - 资源 - 下载- 官网
RPG Maker
于初学者使用,采用Ruby作为脚本语言
帮助文档 - 讨论 - 资源 - 下载
     
搜索
查看: 1296|回复: 2

[原创发布] [lua类]分享一个window类

[复制链接]

13

主题

29

帖子

342

积分

版主

Rank: 7Rank: 7Rank: 7

积分
342
QQ

大宇怪 Lv:66
发表于 2018-1-26 13:56:09 | 显示全部楼层 |阅读模式
先放截图效果:
(这个对话框就是用window类写出来的)
例程:





用到的素材:






下面放出代码:
[Lua] 纯文本查看 复制代码
--=========================================================================================--
--          _____                        _   _____
--         / ___/ _____ ________  ___  / /__/ ___/____
--        / /__  / __ `/ __ `__ \/ _ \/ // / /__/__  /
--       / //_ // /_/ / / / / / /  _// /\ /  __/  / /__
--      /_____/ \__,_/_/ /_/ /_/\___/_/ \_\_/    /____/
--
--      独立游戏开发者论坛                  bbs.gametop.top
--
--      作者:单字一个奕          创建时间:2015年4月26日9时26分59秒
--
--==========================================================================================--

window  = class()


--=============================================================================--
--  构造函数
--=============================================================================--
function window:初始化(x,y,w,h,n)

self.x=x
self.y=y
self.w= 取整(w/8)*8
self.h= 取整(h/8)*8
self.n=n
self.渲染x = 0
self.渲染y = 0

self:取画次数(w)
self:更新渲染坐标()
self.精灵= C_精灵.创建("Dat/UI/menuframes.png")


end
function window:置颜色(a)
        self.精灵:置颜色(a)
end
--=============================================================================--
-- 更新
--=============================================================================--
function window:更新()




end
--=============================================================================--
-- 显示
--=============================================================================--
function window:显示(x,y)
if x ~= nil then
self.x=x
end
if y ~= nil then
self.y=y
end

self.精灵:置渲染区域(self.渲染x+8,self.渲染y+8,8,8)
self.精灵:显示_拉伸(self.x+8,self.y+8,self.w,self.h)


self.精灵:置渲染区域(self.渲染x,self.渲染y,8,8)
self.精灵:显示(self.x,self.y)

for i=1 ,(self.w)/8 do
self.精灵:置渲染区域(self.渲染x+8,self.渲染y,8,8)
self.精灵:显示(self.x+ (i*8),self.y)
end

self.精灵:置渲染区域(self.渲染x+16,self.渲染y,8,8)
self.精灵:显示(self.x+self.w+8,self.y)

for i=1 , (self.h)/8 do
self.精灵:置渲染区域(self.渲染x+16,self.渲染y+8,8,8)
self.精灵:显示(self.x+self.w+8,self.y+ (i*8))
end

for i=1 , (self.w)/8 do
self.精灵:置渲染区域(self.渲染x+8,self.渲染y+16,8,8)
self.精灵:显示(self.x+ (i*8),self.y+self.h+8)
end

self.精灵:置渲染区域(self.渲染x+16,self.渲染y+16,8,8)
self.精灵:显示(self.x+self.w+8,self.y+self.h+8)

for i=1 , (self.h)/8 do
self.精灵:置渲染区域(self.渲染x,self.渲染y+8,8,8)
self.精灵:显示(self.x,self.y+ (i*8))
end

self.精灵:置渲染区域(self.渲染x,self.渲染y+16,8,8)
self.精灵:显示(self.x,self.y+self.h+8)
end

--=============================================================================--
-- 更新渲染坐标
--=============================================================================--
function window:更新渲染坐标()
n=self.n
y=0
while n > 9 do
n =n -9
y=y+1

end
self.渲染x=(n-1)*24
self.渲染y=(y)*24
end
--=============================================================================--
-- 更新渲染大小
--=============================================================================--
function window:更新渲染大小(w,h)
self.w= 取整(w/8)*8
self.h= 取整(h/8)*8
end
--=============================================================================--
-- 取画次数
--=============================================================================--
function window:取画次数(数)
数=数-16
次数=数/8
if (取整(次数)<次数)then
return(取整(次数)+1)
end
return(取整(次数))
end
--=============================================================================--
-- 换肤
--=============================================================================--
function window:换肤(数)
self.n=数
self:更新渲染坐标()
end

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

6

主题

14

帖子

154

积分

注册会员

Rank: 2

积分
154
QQ
发表于 2018-2-7 13:15:36 | 显示全部楼层

回帖奖励 +1 金钱

此帖仅作者可见

使用道具 举报

13

主题

29

帖子

342

积分

版主

Rank: 7Rank: 7Rank: 7

积分
342
QQ

大宇怪 Lv:66
 楼主| 发表于 2018-2-8 04:27:23 | 显示全部楼层
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|GameTop ( 辽ICP备19018758号 )

GMT+8, 2020-9-20 17:47 , Processed in 0.168532 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表