-- 游戏里面等待网络消息或者主动等待都可以调用这里的接口 local WaitDialogManager = class("WaitDialogManager") function WaitDialogManager:ctor() -- 等待窗口 self.showNetworkDialogCount = 0 self.waitNetworkDialogUI = nil -- 透明蒙版 self.TransparencyMaskCount = 0 self.TransparencyMaskUI = nil end -- 显示一个等待对话框 function WaitDialogManager:showWaitNetworkDialog(text) logD("showWaitNetworkDialog text: ",text) --logD("WaitDialogManager:showWaitNetworkDialog()", debug.traceback()) if self.showNetworkDialogCount > 0 then -- 显示引用计数加1 self.showNetworkDialogCount = self.showNetworkDialogCount + 1 if text then self.waitNetworkDialogUI.HtmlCtrl:setText(text) self.waitNetworkDialogUI.HtmlCtrl:setVisible(true) self.waitNetworkDialogUI.ImageView_Text_bg:setVisible(true) else self.waitNetworkDialogUI.HtmlCtrl:setVisible(false) self.waitNetworkDialogUI.ImageView_Text_bg:setVisible(false) end logD("WaitDialogManager:showWaitNetworkDialog(), self.showNetworkDialogCount = " .. tostring(self.showNetworkDialogCount)) return self.waitNetworkDialogUI; end -- 主场景没有则不显示 if app.mainScene == nil then print("主场景不存在,不能显示等待Network窗口") end -- 在最上层显示一个等待窗口 local ui = loadUI("res/ui/ui_tongyong/duanxinchonglian.ui") ui.Items.ImageView:setVisible(false) ui.Items.ImageView_ring:setVisible(false) ui.Items.ImageView_xquan:playClip("rotatexquan"); if text then ui.Items.Text_1:setText(text); ui.Items.Text_1:setVisible(true) ui.Items.ImageView_Text_bg:setVisible(true) else ui.Items.Text_1:setVisible(false) ui.Items.ImageView_Text_bg:setVisible(false) end local modelDialog = loadUI("res/ui/ui_common/ModelDialog.ui") modelDialog.Items.ImageView_Background:setVisible(false); modelDialog.Items.Background:setVisible(false); modelDialog:setSize(cc.Director:getInstance():getWinSize()) modelDialog.Items.Container:addChild(ui) modelDialog:setSendTouchEventParent(false); -- 让其显示在最上层 modelDialog:setLocalZOrder(UIZOrder.NetWaitOrder) -- 并且吃掉最上层的触摸事件 modelDialog:setGlobalZOrder(UIZOrder.NetWaitOrder) app:showNetWaitDialog(modelDialog) modelDialog:registerClick(function() return true end,nil,nil,true); modelDialog.HtmlCtrl = ui.Items.Text_1; modelDialog.ImageView_Text_bg = ui.Items.ImageView_Text_bg self.waitNetworkDialogUI = modelDialog self.showNetworkDialogCount = self.showNetworkDialogCount + 1 logD("WaitDialogManager:showWaitNetworkDialog(), self.showNetworkDialogCount = " .. tostring(self.showNetworkDialogCount)) return self.waitNetworkDialogUI; end -- 关闭等待窗口 function WaitDialogManager:closeWaitNetworkDialog() --logD("WaitDialogManager:closeWaitNetworkDialog()", debug.traceback()) if self.showNetworkDialogCount <= 0 then print("没有等待Network窗口可以关闭") return end self.showNetworkDialogCount = self.showNetworkDialogCount - 1 logD("WaitDialogManager:closeWaitNetworkDialog(), self.showNetworkDialogCount = " .. tostring(self.showNetworkDialogCount)) if self.showNetworkDialogCount <= 0 then print("关闭Network窗口,引用计数" .. self.showNetworkDialogCount) local count = self.waitNetworkDialogUI:getReferenceCount() if count > 0 then self.waitNetworkDialogUI:removeFromParent(); self.waitNetworkDialogUI = nil end else print("等待Network窗口引用计数减一" .. self.showNetworkDialogCount) end end -- 关闭所有的网络等待窗口 function WaitDialogManager:closeAllWaitNet() --logD("WaitDialogManager:closeAllWaitNet()", debug.traceback()) if self.showNetworkDialogCount <= 0 then return end -- 引用计数设为0 self.showNetworkDialogCount = 0; -- 关闭等待窗口 if self.waitNetworkDialogUI and self.waitNetworkDialogUI:getReferenceCount() > 0 then self.waitNetworkDialogUI:removeFromParent() self.waitNetworkDialogUI = nil end end function WaitDialogManager:closeAllNetWait() --logD("WaitDialogManager:closeAllNetWait()", debug.traceback()) self:closeAllWaitNet() end -- 显示一个透明的蒙版,阻挡所有的点击事件 function WaitDialogManager:showTransparencyMask() --logD("WaitDialogManager:showTransparencyMask()", debug.traceback()) if self.TransparencyMaskCount > 0 then -- 显示引用计数加1 self.TransparencyMaskCount = self.TransparencyMaskCount + 1 logD("WaitDialogManager:showTransparencyMask(), self.TransparencyMaskCount = " .. tostring(self.TransparencyMaskCount)) return end -- 主场景没有则不显示 if app.mainScene == nil then print("主场景不存在,不能显示透明等待窗口") return end -- 在最上层显示一个等待窗口 local ui = loadUI("res/ui/ui_common/TransparencyMask.ui") ui:setSendTouchEventParent(false); app:showNetWaitDialog(ui) -- app.mainScene:addChild(ui, UIZOrder.FadeOrder) ui:setGlobalZOrder(UIZOrder.FadeOrder) self.TransparencyMaskUI = ui -- 显示引用计数+1 self.TransparencyMaskCount = self.TransparencyMaskCount + 1 logD("WaitDialogManager:showTransparencyMask(), self.TransparencyMaskCount = " .. tostring(self.TransparencyMaskCount)) end -- 隐藏透明的蒙版 function WaitDialogManager:closeTransparencyMask() --logD("WaitDialogManager:closeTransparencyMask()", debug.traceback()) if self.TransparencyMaskCount <= 0 then print("没有透明等待窗口需要关闭") return end self.TransparencyMaskCount = self.TransparencyMaskCount - 1 logD("WaitDialogManager:closeTransparencyMask(), self.TransparencyMaskCount = " .. tostring(self.TransparencyMaskCount)) if self.TransparencyMaskCount <= 0 then local count = self.TransparencyMaskUI:getReferenceCount() if count > 0 then -- 关闭等待窗口 self.TransparencyMaskUI:removeFromParent() self.TransparencyMaskUI = nil end end end return WaitDialogManager