123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using GameFramework.Event;
- using UnityEngine;
- using UnityEngine.UI;
- using UnityGameFramework.Runtime;
- using Vuplex.WebView;
- using Vuplex.WebView.Demos;
- using ZenFulcrum.EmbeddedBrowser;
- public class ExamStudyForm : UIFormLogic
- {
- public CanvasWebViewPrefab browserUI;
- public HardwareKeyboardListener _hardwareKeyboardListener { get; private set; }
- protected override void OnInit(object userData)
- {
- base.OnInit(userData);
- StartCoroutine(InItUiComponent());
- }
- protected override void OnOpen(object userData)
- {
- base.OnOpen(userData);
- GameMain.Event.Subscribe(OnBeginExamEvent.EventId, OnBeginExam);
- _setUpHardwareKeyboard();
- }
- private void OnBeginExam(object sender, GameEventArgs e)
- {
- OnBeginExamEvent onBeginExamEvent = (OnBeginExamEvent)e;
- string token = onBeginExamEvent.token;
- long timestamp = System.DateTime.Now.Ticks / 10000000;
- if (browserUI != null && browserUI.WebView.IsInitialized)
- {
- browserUI.WebView.LoadUrl(string.Format("{0}{1}&v={2}#/", HttpAddress.examAddress, UserData.token, timestamp));
- }
- }
- protected override void OnClose(bool isShutdown, object userData)
- {
- base.OnClose(isShutdown, userData);
- GameMain.Event.Unsubscribe(OnBeginExamEvent.EventId, OnBeginExam);
- _hardwareKeyboardListener = null;
- }
- IEnumerator InItUiComponent()
- {
- //browserUI = this.transform.Find("CanvasWebViewPrefab").GetComponent<CanvasWebViewPrefab>();
- // Wait for the CanvasWebViewPrefab to initialize, because the CanvasWebViewPrefab.WebView property
- // is null until the prefab has initialized.
- yield return new WaitUntil(()=> {
- return browserUI.WebView != null;
- });
- long timestamp = System.DateTime.Now.Ticks / 10000000;
- browserUI.WebView.LoadUrl(string.Format("{0}{1}&v={2}#/",HttpAddress.examAddress,UserData.token, timestamp));
- }
-
- void _setUpHardwareKeyboard()
- {
- // Send keys from the hardware (USB or Bluetooth) keyboard to the webview.
- // Use separate KeyDown() and KeyUp() methods if the webview supports
- // it, otherwise just use IWebView.SendKey().
- // https://developer.vuplex.com/webview/IWithKeyDownAndUp
- _hardwareKeyboardListener = HardwareKeyboardListener.Instantiate();
- _hardwareKeyboardListener.KeyDownReceived += (sender, eventArgs) =>
- {
- var webViewWithKeyDown = browserUI.WebView as IWithKeyDownAndUp;
- if (webViewWithKeyDown != null)
- {
- webViewWithKeyDown.KeyDown(eventArgs.Value, eventArgs.Modifiers);
- }
- else
- {
- browserUI.WebView.SendKey(eventArgs.Value);
- }
- };
- _hardwareKeyboardListener.KeyUpReceived += (sender, eventArgs) =>
- {
- var webViewWithKeyUp = browserUI.WebView as IWithKeyDownAndUp;
- webViewWithKeyUp?.KeyUp(eventArgs.Value, eventArgs.Modifiers);
- };
- }
- }
|