您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字

184 行
5.8 KiB

  1. -- 游戏里面等待网络消息或者主动等待都可以调用这里的接口
  2. local WaitDialogManager = class("WaitDialogManager")
  3. function WaitDialogManager:ctor()
  4. -- 等待窗口
  5. self.showNetworkDialogCount = 0
  6. self.waitNetworkDialogUI = nil
  7. -- 透明蒙版
  8. self.TransparencyMaskCount = 0
  9. self.TransparencyMaskUI = nil
  10. end
  11. -- 显示一个等待对话框
  12. function WaitDialogManager:showWaitNetworkDialog(text)
  13. logD("showWaitNetworkDialog text: ",text)
  14. --logD("WaitDialogManager:showWaitNetworkDialog()", debug.traceback())
  15. if self.showNetworkDialogCount > 0 then
  16. -- 显示引用计数加1
  17. self.showNetworkDialogCount = self.showNetworkDialogCount + 1
  18. if text then
  19. self.waitNetworkDialogUI.HtmlCtrl:setText(text)
  20. self.waitNetworkDialogUI.HtmlCtrl:setVisible(true)
  21. self.waitNetworkDialogUI.ImageView_Text_bg:setVisible(true)
  22. else
  23. self.waitNetworkDialogUI.HtmlCtrl:setVisible(false)
  24. self.waitNetworkDialogUI.ImageView_Text_bg:setVisible(false)
  25. end
  26. logD("WaitDialogManager:showWaitNetworkDialog(), self.showNetworkDialogCount = " .. tostring(self.showNetworkDialogCount))
  27. return self.waitNetworkDialogUI;
  28. end
  29. -- 主场景没有则不显示
  30. if app.mainScene == nil then
  31. print("主场景不存在,不能显示等待Network窗口")
  32. end
  33. -- 在最上层显示一个等待窗口
  34. local ui = loadUI("res/ui/ui_tongyong/duanxinchonglian.ui")
  35. ui.Items.ImageView:setVisible(false)
  36. ui.Items.ImageView_ring:setVisible(false)
  37. ui.Items.ImageView_xquan:playClip("rotatexquan");
  38. if text then
  39. ui.Items.Text_1:setText(text);
  40. ui.Items.Text_1:setVisible(true)
  41. ui.Items.ImageView_Text_bg:setVisible(true)
  42. else
  43. ui.Items.Text_1:setVisible(false)
  44. ui.Items.ImageView_Text_bg:setVisible(false)
  45. end
  46. local modelDialog = loadUI("res/ui/ui_common/ModelDialog.ui")
  47. modelDialog.Items.ImageView_Background:setVisible(false);
  48. modelDialog.Items.Background:setVisible(false);
  49. modelDialog:setSize(cc.Director:getInstance():getWinSize())
  50. modelDialog.Items.Container:addChild(ui)
  51. modelDialog:setSendTouchEventParent(false);
  52. -- 让其显示在最上层
  53. modelDialog:setLocalZOrder(UIZOrder.NetWaitOrder)
  54. -- 并且吃掉最上层的触摸事件
  55. modelDialog:setGlobalZOrder(UIZOrder.NetWaitOrder)
  56. app:showNetWaitDialog(modelDialog)
  57. modelDialog:registerClick(function() return true end,nil,nil,true);
  58. modelDialog.HtmlCtrl = ui.Items.Text_1;
  59. modelDialog.ImageView_Text_bg = ui.Items.ImageView_Text_bg
  60. self.waitNetworkDialogUI = modelDialog
  61. self.showNetworkDialogCount = self.showNetworkDialogCount + 1
  62. logD("WaitDialogManager:showWaitNetworkDialog(), self.showNetworkDialogCount = " .. tostring(self.showNetworkDialogCount))
  63. return self.waitNetworkDialogUI;
  64. end
  65. -- 关闭等待窗口
  66. function WaitDialogManager:closeWaitNetworkDialog()
  67. --logD("WaitDialogManager:closeWaitNetworkDialog()", debug.traceback())
  68. if self.showNetworkDialogCount <= 0 then
  69. print("没有等待Network窗口可以关闭")
  70. return
  71. end
  72. self.showNetworkDialogCount = self.showNetworkDialogCount - 1
  73. logD("WaitDialogManager:closeWaitNetworkDialog(), self.showNetworkDialogCount = " .. tostring(self.showNetworkDialogCount))
  74. if self.showNetworkDialogCount <= 0 then
  75. print("关闭Network窗口,引用计数" .. self.showNetworkDialogCount)
  76. local count = self.waitNetworkDialogUI:getReferenceCount()
  77. if count > 0 then
  78. self.waitNetworkDialogUI:removeFromParent();
  79. self.waitNetworkDialogUI = nil
  80. end
  81. else
  82. print("等待Network窗口引用计数减一" .. self.showNetworkDialogCount)
  83. end
  84. end
  85. -- 关闭所有的网络等待窗口
  86. function WaitDialogManager:closeAllWaitNet()
  87. --logD("WaitDialogManager:closeAllWaitNet()", debug.traceback())
  88. if self.showNetworkDialogCount <= 0 then
  89. return
  90. end
  91. -- 引用计数设为0
  92. self.showNetworkDialogCount = 0;
  93. -- 关闭等待窗口
  94. if self.waitNetworkDialogUI and self.waitNetworkDialogUI:getReferenceCount() > 0 then
  95. self.waitNetworkDialogUI:removeFromParent()
  96. self.waitNetworkDialogUI = nil
  97. end
  98. end
  99. function WaitDialogManager:closeAllNetWait()
  100. --logD("WaitDialogManager:closeAllNetWait()", debug.traceback())
  101. self:closeAllWaitNet()
  102. end
  103. -- 显示一个透明的蒙版,阻挡所有的点击事件
  104. function WaitDialogManager:showTransparencyMask()
  105. --logD("WaitDialogManager:showTransparencyMask()", debug.traceback())
  106. if self.TransparencyMaskCount > 0 then
  107. -- 显示引用计数加1
  108. self.TransparencyMaskCount = self.TransparencyMaskCount + 1
  109. logD("WaitDialogManager:showTransparencyMask(), self.TransparencyMaskCount = " .. tostring(self.TransparencyMaskCount))
  110. return
  111. end
  112. -- 主场景没有则不显示
  113. if app.mainScene == nil then
  114. print("主场景不存在,不能显示透明等待窗口")
  115. return
  116. end
  117. -- 在最上层显示一个等待窗口
  118. local ui = loadUI("res/ui/ui_common/TransparencyMask.ui")
  119. ui:setSendTouchEventParent(false);
  120. app:showNetWaitDialog(ui)
  121. -- app.mainScene:addChild(ui, UIZOrder.FadeOrder)
  122. ui:setGlobalZOrder(UIZOrder.FadeOrder)
  123. self.TransparencyMaskUI = ui
  124. -- 显示引用计数+1
  125. self.TransparencyMaskCount = self.TransparencyMaskCount + 1
  126. logD("WaitDialogManager:showTransparencyMask(), self.TransparencyMaskCount = " .. tostring(self.TransparencyMaskCount))
  127. end
  128. -- 隐藏透明的蒙版
  129. function WaitDialogManager:closeTransparencyMask()
  130. --logD("WaitDialogManager:closeTransparencyMask()", debug.traceback())
  131. if self.TransparencyMaskCount <= 0 then
  132. print("没有透明等待窗口需要关闭")
  133. return
  134. end
  135. self.TransparencyMaskCount = self.TransparencyMaskCount - 1
  136. logD("WaitDialogManager:closeTransparencyMask(), self.TransparencyMaskCount = " .. tostring(self.TransparencyMaskCount))
  137. if self.TransparencyMaskCount <= 0 then
  138. local count = self.TransparencyMaskUI:getReferenceCount()
  139. if count > 0 then
  140. -- 关闭等待窗口
  141. self.TransparencyMaskUI:removeFromParent()
  142. self.TransparencyMaskUI = nil
  143. end
  144. end
  145. end
  146. return WaitDialogManager