#Persistent ; gui的g标签 和settimer早就支持函数 ; 标签太多的话 变量名容易混 变量值容易被搞错 ; 像 for k,v 这种常见取名 我已经取到 for k6,v6了 ; 还是出错了 ; 是的 用 settimer 调用函数 同时传参 ; 就是把某个函数连同其参数 绑定到一个变量上 然后 settimer 那个变量 ; 精简版示例 ceshi := Func("HideGui").Bind("预设传参11") SetTimer, %ceshi%, -50 Return HideGui(s:="") { ToolTip % "传参为:" s } /* #Persistent a := Func("HideGui").Bind("预设传参11") b := a SetTimer, %a%, 100 Return HideGui(s:="") { ToolTip % "传参为:" s } F1::SetTimer, %b%, Off */ ; 以下是一个单独的例子 ; Timer(function, period, priority, parameters*) timer1 := new Timer("ShowParams", 250,, "一", "二", "三") ;绑定参数 timer1.On() ; 启动计时器 Sleep, 2000 timer2 := new Timer("ShowParams", 550,, 1, 2) ;绑定参数 timer2.On() ; 启动计时器 Sleep, 3000 timer2.Off() ; 暂停计时器 timer2 := "" ; 删除计时器 ShowParams(a, b, c := 3){ Tooltip, %a%-%b%-%c% } class Timer { __New(callback, period := 250, priority := 0, params*) { if (!IsFunc(callback)) ; 不存在该函数 throw Exception("Call to nonexistent function", -1) else if (!params.MaxIndex()) ; 无参数传入 this.binding := Func(callback) else if (params.MaxIndex() < Func(callback).MinParams) ; 参数过少 throw Exception("Too few parameters passed to funcion", -1) else if (params.MaxIndex() > Func(callback).MaxParams and !Func(callback).IsVariadic) ; 参数过多 throw Exception("Too many parameters passed to funcion", -1) else this.binding := Func(callback).Bind(params*) this.period := period this.priority := priority } __Delete(){ funcObj := this.binding SetTimer, %funcObj%, Delete } On(){ funcObj := this.binding SetTimer, %funcObj%, % this.period, % this.priority } Off(){ funcObj := this.binding SetTimer, %funcObj%, off } }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)