面向对象方式封装myStatusWindow
前几天研究了 kudo 的myStatusWindow现在使用面向对象技术重新封装myStatusWindow,做成window类,方便大家使用mini_Window只要写很少代码就能实现mini_window
require "sj_mini_win"--下载的 lua引用
local win=window.new() --监控窗体实例化
win.name="status_window"--名称属性 设置
win.font_height=8 --字体高度属性 设置 默认是18
win.font_name="幼圆" --默认是新宋体
win:addText("label1","my_status_window") --标签创建
win:addGauge ("jingsheng","精神: ", 100, "darkgreen", "mediumblue", "darkred", "50".."/".."100", 0) --创建进度条
win:addGauge ("qixue","气血: ", 50, "darkgreen", "mediumblue", "darkred", "50".."/".."100", 0)
win:addGauge ("jingli","精力: ", 50, "darkgreen", "mediumblue", "darkred", "50".."/".."70", 0)
win:addGauge("neili","内力: ", 100, "darkgreen", "mediumblue", "darkred", "200".."/".."100", 0)
win:addGauge("food","食物: ", 400, "darkgreen", "mediumblue", "darkred", "80".."/".."100", 0)
win:addGauge("drink","饮水: ", 500, "darkgreen", "mediumblue", "darkred", "100".."/".."100", 0)
win:addGauge("pot","潜能: ", 100, "darkgreen", "mediumblue", "darkred", "100", 1)
win:refresh() --刷新
--实现原来代码功能
--------------------
窗体内容更新
function test()
local win=window.new() --监控窗体实例化
win.name="status_window"--名称属性 设置
win.font_height=10 --字体高度属性 设置 默认是18
win.font_name="幼圆" --默认是新宋体
win:addText("label1","更新窗体") --标签创建
win:addGauge("pot","潜能: ", 100, "darkgreen", "mediumblue", "darkred", "200", 1)--利用第一个id参数更新状态条信息 潜能从100-200
win:refresh()
end
我对原来代码简单的修改了下,可能还会有bug欢迎大家对代码修改更新! ttk_00 好东西 我想弱弱的问句,面向对象封装…具体是个什么概念,有什么好处?不要见笑哈,门外汉的问题 原帖由 inspector 于 2011-3-25 12:41 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
我想弱弱的问句,面向对象封装…具体是个什么概念,有什么好处?不要见笑哈,门外汉的问题
面向对象核心思想就是 “代码重用”
拿这个mini_window 举例
看下 kudo 原来写的
前面一部分代码是创建mini_window 窗体颜色,窗体大小,字体大小 ,背影颜色
在--Triggers 分割线后面内容是创建窗体中的内容
AddTriggerEx(
"hp_get_info",
"(【 精神 】[\ ]+(+)[\ ]+/[\ ]+(+)[\ ]+.*【|【 气血 】[\ ]+(+)[\ ]+/[\ ]+(+)[\ ]+.*【|【 食物 】[\ ]+(+)[\ ]+/[\ ]+(+)[\ ]+.*【|【 饮水 】[\ ]+(+)[\ ]+/[\ ]+(+)[\ ]+.*【)",
"",
trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Replace + trigger_flag.Temporary + trigger_flag.OmitFromOutput + trigger_flag.KeepEvaluating ,
-1,
0,
"",
"hp_get_info",
0,
90)
AddTriggerEx(
"hp_get_info1",
"(【 精力 】[\ ]+(+)[\ ]+/[\ ]+(+)[\ ]+.*|【 内力 】[\ ]+(+)[\ ]+/[\ ]+(+)[\ ]+.*|【 潜能 】 (+).*|【 经验 】 (+).*)",
"",
trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Replace + trigger_flag.Temporary + trigger_flag.OmitFromOutput + trigger_flag.KeepEvaluating ,
-1,
0,
"",
"hp_get_info1",
0,
91)
AddTriggerEx(
"hp_get_info3",
"≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡",
"",
trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Replace + trigger_flag.Temporary + trigger_flag.OmitFromOutput + trigger_flag.KeepEvaluating ,
-1,
0,
"",
"",
12,
90)
AddTriggerEx(
"hp_get_info4",
"≡━━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎━━≡",
"",
trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Replace + trigger_flag.Temporary + trigger_flag.OmitFromOutput + trigger_flag.KeepEvaluating ,
-1,
0,
"",
"",
12,
90)
好!!! 理解这些以后,你想下如果我要创建一个status_window 来显示你的技能等级你会怎么改代码。
前面代码不用修改,后面trigger 代码都需要修改。
我现在换个思维模式(面向对象)写代码,我需要重用代码
这个好比 我先把格式合同都写好,里面留几个空格
你自己填上名字,这个合同就生效了。
local win=window.new() --监控窗体实例化就是告诉程序 这个是哪个格式合同
win.name="status_window"--空格填写不填会有默认名字填进去
win.font_height=8 --其他一些 合同明细 字体是8号高度
win.font_name="幼圆" --默认是新宋体
win:addText("label1","my_status_window") --标签创建
win:addGauge ("jingsheng","精神: ", 100, "darkgreen", "mediumblue", "darkred", "50".."/".."100", 0) --创建进度条
win:refresh() --生效
------------
这样你不用重头到尾写代码,只要把细节填写一些。写代码量就会少很多,而且代码质量会提高很多,bug也会少很多。
我现在需要一个显示技能等级status_win
local skillwin=window.new() --监控窗体实例化
skillwin.name="skill_window"--空格填写
skillwin.font_height=8 --
skillwin.font_name="宋体" --
skillwin:addGauge ("skill1","寒冰真气 : ", 83, "darkgreen", "mediumblue", "darkred", "4500".."/".."6889", 0) --创建进度条
skillwin:refresh() --
面向对象好处就是 不再需要在修改别人写的源代码,只需要在你自己代码中引用,调用对象就能实现这个功能了。
[ 本帖最后由 ptouch 于 2011-3-25 02:58 PM 编辑 ] 支持!学习下先ttk_05 yct23 留贴仔细研究一下 这个要好好研究一下 好东西,必须顶的。。。。。。
页:
[1]