最近在學習xlua與專案的結合,在這裡我們要時間的內容有
監聽事件訊息,觸發事件訊息,移除事件訊息,在監聽與觸發的時候都需要能夠傳值給監聽方法
寫個基本的建立類的方法,用於給事件訊息建立物件
function
******class()
local class_type =
class_type.
new=
function()
local self =
setmetatable
( self ,
)return self
endreturn class_type
end
建立事件訊息物件
require
("******class"
)local eventmessage =
******class()
function eventmessage:
create()
local obj = eventmessage:
new(
) obj.data =
return obj
end
新增監聽
--[[
self.data 裝的是事件資訊表
結構分析
data [事件名]=]
]function eventmessage:
addnotify
(event_name, callback, attachparam)
if(event_name == nil
or callback == nil
or type
(callback)~=
"function"
or type
(event_name)~=
"string"
) then
__logerror
("addnotify error.param invaild"
)return
endif
(self.data[event_name]
== nil) then
self.data[event_name]
= end
for i,v in
ipairs
(self.data[event_name])do
if(v.callback == callback) then
if(v.enable ==
false
) then
v.enable =
true
v.attachparam = attachparam
else
__logerror
("addnotify error.repeat added. "
..event_name)
endreturn
endend
table.
insert
(self.data[event_name],)
end
移除監聽並不會做刪除操作,只是禁用
function eventmessage:
removenotify
(event_name, callback)
if(event_name == nil
or callback == nil
or type
(callback)~=
"function"
or type
(event_name)~=
"string"
) then
__logerror
("removenotify error.param invalid."
)return
endif
(self.data[event_name]
== nil) then
return
endfor i,v in
ipairs
(self.data[event_name])do
if(v.callback == callback) then
v.enable =
false
return
endend
end
訊息觸發
function eventmessage:
notify
(event_name, value)
if event_name ==nil or
(self.data[event_name]
== nil) then
return
endlocal flag =
true
for i,v in
ipairs
(self.data[event_name])do
if(v.enable ==
true
) then
v.callback
(value, v.attachparam)
else
flag =
false
endend
if(flag ==
false
) then
for i,v in
ipairs
(self.data[event_name])do
if(v.enable ==
false
) then
table.
remove
(self.data[event_name]
, i)
endend
endend
監聽:
local function
refsh
(val,self)
print
("現在的狀態是"
..val)
endfunction
addnotify()
__eventmessage:
addnotify
("startgame"
, refsh,self)
end移除
function
removenotify()
__eventmessage:
removenotify
("startgame"
, refsh)
end觸發
local function
start()
__eventmessage:
notify
("startgame"
,"開始遊戲"
)end
Lua的物件導向寫法
2 例項 3 尾聲 最近閒的沒事玩 暗黑2 懷舊.哈哈哈哈哈哈 需要開8個遊戲一起操作,沒有工具太麻煩了.於是產生了寫個輔助工具的想法.工具需求當然要求小巧可愛 開發方便.又容易修改.所以選了c 和lua相互配合.機緣巧合vs商店找到乙個庫neolua.找到了用了一下確實不錯就開工了.工具寫好了.返...
Handler訊息機制的寫法
handler訊息機制的寫法 1.在主線程建立乙個handler物件 2.重寫handler物件的handlermessage方法 3.在子執行緒中建立乙個message物件用來攜帶子執行緒處理的結果。4.使用主線程建立的handler在子線中將message傳送到主線程 5.主線程中handler...
react事件的多種寫法
類裡面的函式,放在類的原型物件上,供例項物件呼叫 class person 一般方法 speak onclick 通過this這個例項物件獲取handleclick函式 此時handleclick是自己執行的,所以this指向undefined 定義箭頭函式this指向定義時的this,class ...