多條件控制同乙個引數的處理

2021-09-26 08:43:46 字數 2433 閱讀 3261

舉個栗子,遊戲裡面右上角經常有小地圖,在一些場景裡面需要隱藏,在其他一些場景需要顯示出來。如果簡單的在各個需要的地方直接設定小地圖的顯示隱藏,那麼就會出現控制混亂的情況,如果全部控制使用條件語句之類的話又必定十分臃腫。

那麼我們需要做的是在小地圖那邊自己做好顯隱介面,其它需要用到的地方就直接呼叫介面事件控制,為了防止混亂,事件呼叫時必定需要附帶額外引數,這個引數(舉例:1.在戰鬥場景中,2.在副本中,3.在劇情中,4.在隱藏主介面設定中 …)不應該是對應某某場景這麼具體的,而是對應某某型別的,這樣才不會太繁瑣。顯隱的控制值如果單獨成為乙個類,那麼就不需要每個相同邏輯的小部件都需要複製一波**。那麼我們可以先把這個類弄出來

--[[

多狀態標記類

使用例子:

mainrighttop介面在幾種情況下需要隱藏:1.在戰鬥場景中,2.在副本中,3.在劇情中,4.在隱藏主介面設定中 ...

那麼可以在對應的類定於乙個變數 self.visiblestate = stateflag.new()

進入戰鬥場景self.visiblestate:addstate(stateflag.h1)--新增1隱藏狀態

離開戰鬥場景self.visiblestate:delstate(stateflag.h1)--移除1隱藏狀態

判斷介面是否顯示self.isinstate()==false--顯示介面(false表示沒新增有任何隱藏狀態)

]]stateflag=stateflag or baseclass()

-- stateflag狀態常量,當然實際使用中會使用更加易懂的變數名重新定全域性變數

stateflag.h0=0x0

stateflag.h1=0x1

stateflag.h2=0x2

stateflag.h3=0x4

stateflag.h4=0x8

stateflag.h5=0x10

stateflag.h6=0x20

stateflag.h7=0x40

stateflag.h8=0x80

stateflag.h9=0x100

stateflag.h10=0x200

stateflag.h11=0x400

stateflag.h12=0x800

stateflag.h13=0x1000

stateflag.h14=0x2000

stateflag.h15=0x4000

stateflag.h16=0x8000

--[[@

功能: 多狀態標記變數

]]function stateflag:__init()

-- 狀態值

self.value=stateflag.h0

end-- 設定初始值

function stateflag:initvalue(val)

self.value = val or stateflag.h0

end-- 新增狀態量

-- 引數state:stateflag狀態常量

function stateflag:addstate(state)

self.value = bit.bor(self.value, state)

end-- 刪除狀態量

-- 引數state:stateflag狀態常量

function stateflag:delstate(state)

self.value = bit.band(self.value,bit.bnot(state))

end-- 是否有狀態值

function stateflag:isinstate()

return self.value>0

end

local function onhidemapview(hide,mode)

if self.model.visiblestate == nil then

--如果還沒有就新建乙個

self.model.visiblestate = stateflag.new()

endmode = mode or stateflag.h1

if hide then --隱藏

self.model.visiblestate:addstate(mode)

else --顯示

self.model.visiblestate:delstate(mode)

endif self.mapview then

if self.model.visiblestate:isinstate() == true then

self.mapview:hide()

else

self.mapview:cancelhide()

endend

endself:bind(eventname.hide_map_view, onhidemapview)

mysql同乙個表,多種條件的多種排序

mysql同乙個表,多種條件的多種排序,這裡使用了php結合mysql實現 這裡是乙個以yii框架開發的乙個程式,其他框架同理 示例使用場景介紹 2 訂單狀態為 1,2,3,4 的始終在其他狀態的前面 3 訂單狀態為 1,2,3,4 的按照訂單生成時間倒序排 4 訂單狀態不為 1,2,3,4 的始終...

呼叫同乙個函式,變數控制傳參

let variabledata true getdata variabledata getdata function getdata variabledata data object.assign data,variabledata console.log data object.assign 是...

同乙個Activity的Dialog的重用

有可能同乙個畫面有多次機會要談出datepickerdialog 例如註冊畫面 但是如果每次都new乙個datepickerdialog的話,是不可取的,會消耗記憶體。android為datepickerdialog提供了updatedate方法來解決此問題,也就是共用乙個datepickerdia...