最近看了个HS的时间显示的例子,顺便学习了一下这个lua定义函数的方法,被折腾了许久,最后竟然是gpt解答了。
定义方式
-- 定义一个对象
local myObject = {
isVisible = false,
}
-- 定义对象的方法
function myObject:toggleShow()
self.isVisible = not self.isVisible
if self.isVisible then
print("Object is now visible")
else
print("Object is now hidden")
end
end
-- 调用对象方法
myObject:toggleShow() -- 第一次调用,将显示 "Object is now visible"
myObject:toggleShow() -- 第二次调用,将显示 "Object is now hidden"
在这个示例中,我们定义了一个名为 myObject 的对象,它有一个布尔属性 isVisible,初始值为 false。然后,我们使用 function obj:toggleShow() 语法定义了 toggleShow 方法,它会切换 isVisible 属性的值,并根据该值打印相应的消息。文章来源:https://www.toymoban.com/news/detail-829188.html
调用对象方法时,我们使用了 : 运算符,它会自动传递对象本身作为第一个参数给方法。因此,myObject:toggleShow() 实际上等同于 myObject.toggleShow(myObject),这样方法内部就可以使用 self 关键字来访问对象的属性和方法。文章来源地址https://www.toymoban.com/news/detail-829188.html
应用:显示日期
local obj={}
obj.__index = obj
print("obj is:",obj)
function obj:init()
obj.canvas = hs.canvas.new({x=0, y=0, w=0, h=0}):show()
obj.canvas[1] = {
type = "rectangle",
action = "fill",
fillColor = {hex="#000000", alpha=0.75}
}
obj.canvas[2] = {
type = "text",
text = "",
textSize = 120,
textAlignment = "center",
}
end
function obj:toggleShow()
if obj.timer then
obj.timer:stop()
obj.timer = nil
obj.canvas:hide()
else
local time = os.date("%H:%M\n%A\n%Y-%m-%d")
local cscreen = hs.screen.mainScreen()
local cres = cscreen:fullFrame()
obj.canvas:frame({
x = cres.x+cres.w*0.15/2,
y = cres.y+cres.h*0.30/2,
w = cres.w*0.85,
h = cres.h*0.50
})
obj.canvas[2].text = time
obj.canvas:show()
obj.timer = hs.timer.doAfter(2, function()
obj.canvas:hide()
obj.timer = nil
end)
end
end
obj:init()
hs.hotkey.bind({"alt"}, "t", function() obj.toggleShow(obj) end)
print("now obj:", obj)
return obj
到了这里,关于【LUA】时间面板显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!