UISimpleWebView.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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.webView:SetActive(false)
  71. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  72. if wentingCanvasWebVewPrefab.WebView then
  73. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged + System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  74. wentingCanvasWebVewPrefab.WebView:LoadUrl(data)
  75. wentingCanvasWebVewPrefab:SetResolution(resolution)
  76. else
  77. if wentingCanvasWebVewPrefab then
  78. wentingCanvasWebVewPrefab.Initialized = wentingCanvasWebVewPrefab.Initialized + System.EventHandler(self.OnWebInited, self)
  79. end
  80. wentingCanvasWebVewPrefab.InitialUrl = tostring(data)
  81. wentingCanvasWebVewPrefab:Init(resolution, 15, scale)
  82. end
  83. end
  84. function UISimpleWebView:RemoveEventListener()
  85. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  86. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  87. if wentingCanvasWebVewPrefab then
  88. wentingCanvasWebVewPrefab.Initialized = wentingCanvasWebVewPrefab.Initialized - System.EventHandler(self.OnWebInited, self)
  89. if wentingCanvasWebVewPrefab.WebView then
  90. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged - System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  91. end
  92. end
  93. end
  94. function UISimpleWebView:AddUIEventListener()
  95. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  96. end
  97. function UISimpleWebView:OnHide()
  98. end
  99. function UISimpleWebView:OnShow(data)
  100. self.controller:SetData(data)
  101. end
  102. function UISimpleWebView:OnClose()
  103. end
  104. function UISimpleWebView:OnDispose()
  105. self.controller:OnDispose()
  106. end
  107. function UISimpleWebView:OnClickCloseBtn()
  108. self:UIClose()
  109. end
  110. function UISimpleWebView:OnWebInited()
  111. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  112. if wentingCanvasWebVewPrefab then
  113. if wentingCanvasWebVewPrefab.WebView then
  114. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged + System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  115. wentingCanvasWebVewPrefab.WebView:LoadUrl(wentingCanvasWebVewPrefab.InitialUrl)
  116. end
  117. end
  118. end
  119. function UISimpleWebView:OnWebProgress()
  120. self.webView:SetActive(true)
  121. local wentingCanvasWebVewPrefab = self.webView.wentingCanvasWebVewPrefab
  122. if wentingCanvasWebVewPrefab then
  123. if wentingCanvasWebVewPrefab.WebView then
  124. wentingCanvasWebVewPrefab.WebView.LoadProgressChanged = wentingCanvasWebVewPrefab.WebView.LoadProgressChanged - System.EventHandler_Vuplex_WebView_ProgressChangedEventArgs(self.OnWebProgress, self)
  125. end
  126. end
  127. end
  128. return UISimpleWebView