瀏覽代碼

Change the handling of the fullscreenchange event

customisations
alemart 11 月之前
父節點
當前提交
c11c157420
共有 1 個檔案被更改,包括 30 行新增8 行删除
  1. 30
    8
      src/core/viewport.ts

+ 30
- 8
src/core/viewport.ts 查看文件

312
  */
312
  */
313
 class ViewportFullscreenHelper
313
 class ViewportFullscreenHelper
314
 {
314
 {
315
+    /** The viewport */
316
+    private readonly _viewport: Viewport;
317
+
315
     /** The container to be put in fullscreen */
318
     /** The container to be put in fullscreen */
316
     private readonly _container: HTMLElement;
319
     private readonly _container: HTMLElement;
317
 
320
 
321
+    /** Event handler */
322
+    private _boundEventHandler: EventListener;
323
+
318
 
324
 
319
 
325
 
320
     /**
326
     /**
321
      * Constructor
327
      * Constructor
322
-     * @param _viewport Viewport
328
+     * @param viewport Viewport
323
      */
329
      */
324
-    constructor(private readonly _viewport: Viewport)
330
+    constructor(viewport: Viewport)
325
     {
331
     {
326
-        this._container = _viewport.container;
332
+        this._viewport = viewport;
333
+        this._container = viewport.container;
334
+        this._boundEventHandler = this._triggerEvent.bind(this);
335
+    }
336
+
337
+    /**
338
+     * Initialize
339
+     */
340
+    init(): void
341
+    {
342
+        this._container.addEventListener('fullscreenchange', this._boundEventHandler);
343
+    }
344
+
345
+    /**
346
+     * Release
347
+     */
348
+    release(): void
349
+    {
350
+        this._container.removeEventListener('fullscreenchange', this._boundEventHandler);
327
     }
351
     }
328
 
352
 
329
     /**
353
     /**
354
                     if(container === (document as any).webkitFullscreenElement) {
378
                     if(container === (document as any).webkitFullscreenElement) {
355
                         Utils.log('Entering fullscreen mode...');
379
                         Utils.log('Entering fullscreen mode...');
356
                         resolve();
380
                         resolve();
357
-                        this._triggerEvent();
358
                     }
381
                     }
359
                     else
382
                     else
360
                         reject(new TypeError());
383
                         reject(new TypeError());
373
             }).then(() => {
396
             }).then(() => {
374
                 Utils.log('Entering fullscreen mode...');
397
                 Utils.log('Entering fullscreen mode...');
375
                 resolve();
398
                 resolve();
376
-                this._triggerEvent();
377
             }, reject);
399
             }, reject);
378
         });
400
         });
379
     }
401
     }
401
                     if(doc.webkitFullscreenElement === null) {
423
                     if(doc.webkitFullscreenElement === null) {
402
                         Utils.log('Exiting fullscreen mode...');
424
                         Utils.log('Exiting fullscreen mode...');
403
                         resolve();
425
                         resolve();
404
-                        this._triggerEvent();
405
                     }
426
                     }
406
                     else
427
                     else
407
                         reject(new TypeError());
428
                         reject(new TypeError());
418
             document.exitFullscreen().then(() => {
439
             document.exitFullscreen().then(() => {
419
                 Utils.log('Exiting fullscreen mode...');
440
                 Utils.log('Exiting fullscreen mode...');
420
                 resolve();
441
                 resolve();
421
-                this._triggerEvent();
422
             }, reject);
442
             }, reject);
423
         });
443
         });
424
     }
444
     }
988
         this._hud._init(HUD_ZINDEX);
1008
         this._hud._init(HUD_ZINDEX);
989
         this._canvases.init();
1009
         this._canvases.init();
990
         this._resizer.init();
1010
         this._resizer.init();
1011
+        this._fullscreen.init();
991
         this._fullscreenButton?.init();
1012
         this._fullscreenButton?.init();
992
     }
1013
     }
993
 
1014
 
997
      */
1018
      */
998
     _release(): void
1019
     _release(): void
999
     {
1020
     {
1021
+        this._fullscreenButton?.release();
1022
+        this._fullscreen.release();
1000
         this._resizer.release();
1023
         this._resizer.release();
1001
         this._canvases.release();
1024
         this._canvases.release();
1002
         this._hud._release();
1025
         this._hud._release();
1003
         this._containers.release();
1026
         this._containers.release();
1004
-        this._fullscreenButton?.release();
1005
     }
1027
     }
1006
 }
1028
 }

Loading…
取消
儲存