UISimpleWebView.lua 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. local UISimpleWebView = require("UIWeb/UISimpleWebView_Generate")
  2. function UISimpleWebView:OnAwake(data)
  3. self.controller = require("UIWeb/UISimpleWebCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UISimpleWebView:AddEventListener()
  8. end
  9. function UISimpleWebView:FillContent(data, uiBase)
  10. self.uiBase = uiBase
  11. local gameObject = self.uiBase:GetRoot()
  12. if gameObject ~= nil then
  13. self.gameObject = gameObject
  14. self.transform = gameObject.transform
  15. end
  16. self:InitGenerate(self.transform, data)
  17. self:Init()
  18. end
  19. function UISimpleWebView:Init()
  20. local size = self.webView.transform.rect.size
  21. local scale = 1
  22. if size.x > 1024 then
  23. local scale1 = 1024 / size.x
  24. if scale > scale1 then
  25. scale = scale1
  26. end
  27. end
  28. if size.y > 1024 then
  29. local scale2 = 1024 / size.y
  30. if scale > scale2 then
  31. scale = scale2
  32. end
  33. end
  34. local data = self.controller.data
  35. local idx = nil
  36. local dataLen = #data
  37. for i = 1, dataLen do
  38. local char = string.sub(data, i, i)
  39. if char ~= '0'
  40. and char ~= '1'
  41. and char ~= '2'
  42. and char ~= '3'
  43. and char ~= '4'
  44. and char ~= '5'
  45. and char ~= '6'
  46. and char ~= '7'
  47. and char ~= '8'
  48. and char ~= '9'
  49. and char ~= '10'
  50. and char ~= '.'
  51. then
  52. idx = i
  53. break
  54. end
  55. end
  56. local resolution = nil
  57. if idx then
  58. resolution = string.sub(data, 1, idx - 1)
  59. local result, value = RO_XPCALL(function ()
  60. return tonumber(resolution)
  61. end, debug.traceback)
  62. if result then
  63. resolution = value
  64. data = string.sub(data, idx, dataLen)
  65. end
  66. end
  67. if not resolution then
  68. resolution = 1
  69. end
  70. self.webBtns:SetActive(true)
  71. self.webView:SetActive(false)
  72. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  73. if wentingCanvasWebVewPrefab.WebView then
  74. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged + System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  75. wentingCanvasWebVewPrefab.WebView:LoadUrl(data)
  76. wentingCanvasWebVewPrefab:SetResolution(resolution)
  77. else
  78. if wentingCanvasWebVewPrefab then
  79. wentingCanvasWebVewPrefab.Initialized = wentingCanvasWebVewPrefab.Initialized + System.EventHandler(self.OnWebInited, self)
  80. end
  81. wentingCanvasWebVewPrefab.InitialUrl = tostring(data)
  82. wentingCanvasWebVewPrefab:Init(resolution, 15, scale)
  83. end
  84. end
  85. function UISimpleWebView:RemoveEventListener()
  86. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  87. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  88. if wentingCanvasWebVewPrefab then
  89. wentingCanvasWebVewPrefab.Initialized = wentingCanvasWebVewPrefab.Initialized - System.EventHandler(self.OnWebInited, self)
  90. if wentingCanvasWebVewPrefab.WebView then
  91. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged - System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  92. end
  93. end
  94. end
  95. function UISimpleWebView:AddUIEventListener()
  96. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  97. self.uiBase:AddButtonUniqueEventListener(self.goBackBtn.button, self, self.OnGoBackBtnClick)
  98. self.uiBase:AddButtonUniqueEventListener(self.goForwardBtn.button, self, self.OnGoForwardBtnClick)
  99. self.uiBase:AddButtonUniqueEventListener(self.reloadBtn.button, self, self.OnReloadBtnClick)
  100. end
  101. function UISimpleWebView:OnHide()
  102. end
  103. function UISimpleWebView:OnShow(data)
  104. self.controller:SetData(data)
  105. end
  106. function UISimpleWebView:OnClose()
  107. end
  108. function UISimpleWebView:OnDispose()
  109. self.controller:OnDispose()
  110. end
  111. function UISimpleWebView:OnClickCloseBtn()
  112. self:UIClose()
  113. end
  114. function UISimpleWebView:OnWebInited()
  115. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  116. if wentingCanvasWebVewPrefab then
  117. if wentingCanvasWebVewPrefab.WebView then
  118. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged + System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  119. wentingCanvasWebVewPrefab.WebView:LoadUrl(wentingCanvasWebVewPrefab.InitialUrl)
  120. end
  121. end
  122. end
  123. function UISimpleWebView:OnWebProgress()
  124. self.webView:SetActive(true)
  125. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  126. if wentingCanvasWebVewPrefab then
  127. if wentingCanvasWebVewPrefab.WebView then
  128. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged - System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  129. end
  130. end
  131. end
  132. function UISimpleWebView:OnGoBackBtnClick()
  133. self.webView.wentingCanvasWebVewPrefab.WebView:GoBack()
  134. end
  135. function UISimpleWebView:OnGoForwardBtnClick()
  136. self.webView.wentingCanvasWebVewPrefab.WebView:GoForward()
  137. end
  138. function UISimpleWebView:OnReloadBtnClick()
  139. self.webView.wentingCanvasWebVewPrefab.WebView:Reload()
  140. end
  141. return UISimpleWebView