学习lua的一些好文章: http://www.jb51.net/list/list_245_1.htm <a target=_blank href="http://blog.csdn.net/q277055799/article/details/8463883" style="font-family:'Helvetica Neue';font-size:14px;">http://blog.csdn.net/q277055799/article/details/8463883</a> ==========下面是一些杂项======= print("os.time()="..os.time() .. "os.date()="..os.date()) -- os.time()=1434333054 os.date()=Mon Jun 15 09:50:54 2015 格式:月/日/年 os.date("%x",os.time()) -- 06/16/15 对table的一些常用操作: 连接函数:table.concat(table,sep,start,end) —table,分隔符,开始和结束位置 插入函数:table.insert(table,pos,value) —table,位置,值 移除函数:table.remove(table,pos) 升序排序:table.sort(table,comp) 移除函数:table.remove(table,pos) --删除table数组部分位于pos位置的元素. 其后的元素会被前移. pos默认为table长度,即从最后一个元素删起. ============END======== 下面的笔记都是在公司的学习笔记。 1.九月农场中的util/tools.lua。 self.iconBlue:setVisible(data.rewardLv > 1) ==============敏感字检测: function violateWords(str,mark) --print("搜索敏感词语 1.不通过 2.屏蔽") if mark == 1 then for _,v in pairs(illegal_words_config.illegal_words_config) do --print("yy " .. v.word .. " = " .. str) if string.find(str,v.word) then --包含敏感词汇不允许通过 ui_tips_layer_t:ins():showColorTips(localizable.include_banWords) return false end end return true elseif mark == 2 then --包含敏感词汇屏蔽 for _,v in pairs(illegal_words_config.illegal_words_config) do --print(v.word .. " 包含敏感词汇屏蔽") str = string.gsub(str,v.word,"****") end return str end end 用法: function changeName(self) local name = self.farmname:getText() if violateWords(name,1) then local buff = gamesvr.packChangePlayerName(name) netmng.sendGsData(buff) end end =======打印整个table中的内容======= function printTable3Level( table,strName ) print(strName,"===================") for k,v in pairs(table) do print(" --",k,v) if type(v) == "table" then for m,n in pairs(v) do print(" |-",m,n) if type(n) == "table" then for p,q in pairs(n) do print(" |-",p,q) end end end end end print("==========================") end 用法: printTable3Level(self.tblSignInData_,"gggggg") =======求table长度======= function tableLength(t) if tableIsEmpty(t) then return 0 end local count = 0 for _ in pairs(t) do count = count + 1 end return count end 用法: self.tblFansNew_ = {} tableLength(self.tblFansNew_) =======时间格式======= function formatTimeHHMMSS( second ) local h = math.floor(second / 3600) local m = math.floor((second % 3600) / 60) local s = math.floor((second % 3600) % 60) if h > 0 then if s > 0 then return string.format("%d时%d分%d秒",h,s) elseif m > 0 then return string.format("%d时%d分",m) else return string.format("%d小时",h) end elseif m > 0 then if s > 0 then return string.format("%d分%d秒",s) else return string.format("%d分钟",s) end else return string.format("%d秒",s) end end 用法: self.labelTime_:setString(formatTimeHHMMSS(remainTime)) =======获取2点间的距离======= function getTwoPointDistance(px1,py1,px2,py2) local deltaX,deltaY = px1 - px2,py1 - py2 return math.sqrt(deltaX * deltaX + deltaY * deltaY) end 用法: local distance = getTwoPointDistance(px,py,pLast.x,pLast.y) =======时间日期======= —年、月、日 local today = os.date("%Y%m%d") local data = tonumber(today,10) + 1 print("today== "..today .. "data=="..data) -- today==20150615 data==20150616 —时、分、秒 local today = os.date("%H%M%S") print("today=="..today) -- today==094139 =====四舍五入取整======== function math.round(value) value = math.floor(value + 0.5) return value end 用法:score = math.round(score) ======是否触摸到子对象======= function isTouchChildren(self,_touchX,_touchY) local lp = self.node_:convertToNodeSpace(ccp(_touchX,_touchY)) local rect = self.body_:boundingBox() if rect:containsPoint(lp) then return true end if self.menu_:isVisible() then lp = self.menu_:convertToNodeSpace(ccp(_touchX,_touchY)) local items = self.menu_:getChildren() for i = 0,items:count() - 1 do local item = tolua.cast(items:objectAtIndex(i),"CCMenuItem") if item:isVisible() then rect = item:boundingBox() if rect:containsPoint(lp) then return true end end end end return false end =====table复制======== function depCopyTable(st) local tab = {} for k,v in pairs(st or {}) do if type(v) ~= "table" then tab[k] = v else tab[k] = depCopyTable(v) end end return tab end 用法: function initDailyTask(self) print("初始化每日任务表") self.tblDailyTask_ = {} --printTable3Level(daily_task_config.daily_task_config," " .. self.level_) local cfg = depCopyTable(daily_task_config.daily_task_config) for _,v in pairs(cfg) do if self.level_ >= v.open_lv then -- printTable3Level(v," " .. self.level_) table.insert(self.tblDailyTask_,v) end end end =============公告今日不再显示============ 勾选时:local curtime = math.ceil((os.time() + 8*3600) / 86400) * 86400 - 8*3600 运行时: local dataStr = LocalStorage:localStorageGetItem("isNoShowNoticeTime") local curtime = tonumber(os.time()) local lasttime = dataStr if lasttime == nil or lasttime == "" then lasttime = 0 else lasttime = tonumber(dataStr) end if lasttime < curtime then print(“==显示公告==") end =============随机数============ 1.local random = math.random(1,#tips_config.tips_config) 2.math.randomseed(os.time()) print(math.random(3,4)) -- 输出不是3就是4 ============排序=========== 参考:http://www.jb51.net/article/55718.htm local test0 ={1,9,2,8,3,7,4,6} --table.sort(test0) --从小到大排序 table.sort(test0,function(a,b) return a>b end) —从大到小排序 for i,v in pairs(test0) do print("i==%d"..i.."v==%d"..v) end <pre name="code" class="cpp">============比较两个时间点(os.date())之间的时间间隔值======= --[[比较两个时间,返回相差多少时间]] function timediff(long_time,short_time) local n_short_time,n_long_time,carry,diff = os.date('*t',short_time),os.date('*t',long_time),false,{} local colMax = {60,60,24,os.time{year=n_short_time.year,month=n_short_time.month+1,day=0}).day,12,0} n_long_time.hour = n_long_time.hour - (n_long_time.isdst and 1 or 0) + (n_short_time.isdst and 1 or 0) -- handle dst for i,v in ipairs({'sec','min','hour','day','month','year'}) do diff[v] = n_long_time[v] - n_short_time[v] + (carry and -1 or 0) carry = diff[v] < 0 if carry then diff[v] = diff[v] + colMax[i] end end return diff end local n_long_time = os.date(os.time{year=2014,month=6,day=10,hour=16,min=0,sec=0}); local n_short_time = os.date(os.time{year=2013,month=5,day=11,sec=0}); local t_time = timediff(n_long_time,n_short_time); local time_txt = string.format("%04d",t_time.year).."年"..string.format("%02d",t_time.month).."月"..string.format("%02d",t_time.day).."日 "..string.format("%02d",t_time.hour)..":"..string.format("%02d",t_time.min)..":"..string.format("%02d",t_time.sec); print(time_txt);