專案記錄22 tolua基於lua框架事件派發

2021-07-10 03:04:54 字數 2448 閱讀 4479

每天晚上抽點時間寫一點點就一點點,以前不寫部落格但是現在,不為別的只是為了告訴別人我還存在。

這幾天在地鐵上發現好多人都還在玩消除遊戲,今天起碼看到5個人,但是玩的版本都不一樣。看來休閒遊戲還是有市場的。(題外話)

說到lua的事件派發,其實很簡單就是乙個table的事,這個是view裡面自己的乙個內建派發,所有view都繼承它。還有就是我不是大神,只是任勞任怨的小兵,所有就簡單化了。

--[[

2016-2-23 xinghua

]]local eventdispatcher = class("eventdispatcher")

local _events = nil

function eventdispatcher:ctor( )

_events = {}

end--[[

表結構}

]]--註冊監聽事件

function eventdispatcher:addeventlistener(stype,listener)

if type(stype) ~= "string" or type(listener) ~= "function" then

error("addeventlistener error : type error ",2)

return

end--獲取_events裡面事件

local eventlist = _events[stype]

if eventlist == nil then

eventlist = {}

table.insert(eventlist,listener) --想佇列裡面插入乙個事件

_events[stype] = eventlist   --放到大表裡面

else

local func = eventlist[listener]

if func == nil then

table.insert(eventlist,listener)

else

error("addeventlistener error : listeren hai in")

endend

end--[[

觸發]]

function eventdispatcher:dispatcher(stype,...)

if type(stype) ~= "string" then

error("dispatcher error : stype error",1)

return

endlocal listeners = _events[stype]

if listeners == nil or #listeners <= 0 then

return

endfor i,v in ipairs(listeners) do

v(...)

endend

--[[

移除指定型別的所有關聯事件偵聽,如果引數為nil則刪除當前註冊器中所有的函式偵聽

listener ~= nil 刪除這個型別裡面這個監聽

]]function eventdispatcher:removeeventlisteners(stype,listener)

--空刪除所有清空表

if stype == nil then

--獲取keys

local keys = table.keys(_events)

for i,v in ipairs(keys) do

_events[v] = nil --設定為空

endreturn

end                

if type(stype) ~= "string" then

error("removeeventlisteners error : stype no string",2)

return

endlocal typelisteners  = _events[stype] --取出裡面所有的這個型別的func

--根據型別刪除

if listener ~= nil and type(listener) == "function" then

if typelisteners ~= nil and table.nums(typelisteners) > 0 then

if typelisteners[listener] ~= nil then

typelisteners[listener] = nil

endend

return

end--刪除乙個型別

if typelisteners ~= nil then 

_events[stype] = nil

endend

function  eventdispatcher:dumpevent( )

dump(_events)

endreturn eventdispatcher

Tolua學習記錄一

tolua是unity靜態繫結lua的乙個解決方案 它是乙個用來簡化在c 中整合lua的外掛程式 它自動生成用於在lua中訪問unity的繫結 它把c 中的常量 變數 函式 屬性 類以及列舉暴露給lua 1 c 特性attribute 2 值型別和引用型別 二者均繼承自 system.object ...

shell學習記錄 2 2

echo 這是指令碼的名稱 0 echo 這是指令碼的第1個引數 1 echo 這是指令碼的第2個引數 2 echo 這是指令碼的第3個引數 3 echo 這是指令碼的第4個引數 4 echo 這是指令碼的第5個引數 5 echo 這是指令碼的第6個引數 6 echo 這是指令碼的第7個引數 7 e...

OpenCV學習記錄22

一 學習內容 1 影象對映 1.1 影象對映 對映到不同的座標位置 例如 影象上下對稱 左右對稱 對角線對稱 縮小等 1.2 關於對映表的設定 值為對映後的座標位置 二 除錯 include include include using namespace cv using namespace std...