@next2d/core 1.18.12 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/package.json +20 -28
  2. package/src/Canvas/service/CanvasBootOffscreenCanvasService.d.ts +10 -0
  3. package/src/Canvas/service/CanvasBootOffscreenCanvasService.js +19 -0
  4. package/src/Canvas/service/CanvasInitializeService.d.ts +11 -0
  5. package/src/Canvas/service/CanvasInitializeService.js +23 -0
  6. package/src/Canvas/service/CanvasSetPositionService.d.ts +9 -0
  7. package/src/Canvas/service/CanvasSetPositionService.js +30 -0
  8. package/src/Canvas/usecase/CanvasPointerDownEventUseCase.d.ts +10 -0
  9. package/src/Canvas/usecase/CanvasPointerDownEventUseCase.js +57 -0
  10. package/src/Canvas/usecase/CanvasPointerLeaveEventUseCase.d.ts +10 -0
  11. package/src/Canvas/usecase/CanvasPointerLeaveEventUseCase.js +23 -0
  12. package/src/Canvas/usecase/CanvasPointerMoveEventUseCase.d.ts +10 -0
  13. package/src/Canvas/usecase/CanvasPointerMoveEventUseCase.js +30 -0
  14. package/src/Canvas/usecase/CanvasPointerUpEventUseCase.d.ts +10 -0
  15. package/src/Canvas/usecase/CanvasPointerUpEventUseCase.js +29 -0
  16. package/src/Canvas/usecase/CanvasRegisterEventUseCase.d.ts +10 -0
  17. package/src/Canvas/usecase/CanvasRegisterEventUseCase.js +39 -0
  18. package/src/Canvas/usecase/CanvasWheelEventUseCase.d.ts +11 -0
  19. package/src/Canvas/usecase/CanvasWheelEventUseCase.js +32 -0
  20. package/src/Canvas.d.ts +5 -0
  21. package/src/Canvas.js +16 -0
  22. package/src/CoreUtil.d.ts +116 -0
  23. package/src/CoreUtil.js +165 -0
  24. package/src/Display.d.ts +3 -0
  25. package/{dist → src}/Display.js +5 -7
  26. package/src/Events.d.ts +3 -0
  27. package/{dist → src}/Events.js +3 -2
  28. package/src/Filters.d.ts +3 -0
  29. package/src/Geom.d.ts +3 -0
  30. package/{dist → src}/Geom.js +2 -3
  31. package/src/Media.d.ts +3 -0
  32. package/src/Net.d.ts +3 -0
  33. package/{dist → src}/Net.js +2 -3
  34. package/src/Next2D/service/VideoSyncService.d.ts +11 -0
  35. package/src/Next2D/service/VideoSyncService.js +50 -0
  36. package/src/Next2D/usecase/CaptureToCanvasUseCase.d.ts +12 -0
  37. package/src/Next2D/usecase/CaptureToCanvasUseCase.js +92 -0
  38. package/src/Next2D/usecase/CreateRootMovieClipUseCase.d.ts +15 -0
  39. package/src/Next2D/usecase/CreateRootMovieClipUseCase.js +46 -0
  40. package/src/Next2D/usecase/LoadUseCase.d.ts +12 -0
  41. package/src/Next2D/usecase/LoadUseCase.js +66 -0
  42. package/src/Next2D.d.ts +138 -0
  43. package/src/Next2D.js +209 -0
  44. package/src/Player/service/PlayerAppendElementService.d.ts +9 -0
  45. package/src/Player/service/PlayerAppendElementService.js +22 -0
  46. package/src/Player/service/PlayerApplyContainerElementStyleService.d.ts +12 -0
  47. package/src/Player/service/PlayerApplyContainerElementStyleService.js +44 -0
  48. package/src/Player/service/PlayerCreateContainerElementService.d.ts +9 -0
  49. package/src/Player/service/PlayerCreateContainerElementService.js +28 -0
  50. package/src/Player/service/PlayerDoubleClickEventService.d.ts +10 -0
  51. package/src/Player/service/PlayerDoubleClickEventService.js +24 -0
  52. package/src/Player/service/PlayerKeyDownEventService.d.ts +10 -0
  53. package/src/Player/service/PlayerKeyDownEventService.js +24 -0
  54. package/src/Player/service/PlayerKeyUpEventService.d.ts +10 -0
  55. package/src/Player/service/PlayerKeyUpEventService.js +23 -0
  56. package/src/Player/service/PlayerLoadingAnimationService.d.ts +10 -0
  57. package/src/Player/service/PlayerLoadingAnimationService.js +33 -0
  58. package/src/Player/service/PlayerPointerDownEventService.d.ts +10 -0
  59. package/src/Player/service/PlayerPointerDownEventService.js +47 -0
  60. package/src/Player/service/PlayerPointerMoveEventService.d.ts +10 -0
  61. package/src/Player/service/PlayerPointerMoveEventService.js +86 -0
  62. package/src/Player/service/PlayerPointerUpEventService.d.ts +10 -0
  63. package/src/Player/service/PlayerPointerUpEventService.js +35 -0
  64. package/src/Player/service/PlayerRemoveCachePostMessageService.d.ts +9 -0
  65. package/src/Player/service/PlayerRemoveCachePostMessageService.js +37 -0
  66. package/src/Player/service/PlayerRemoveLoadingElementService.d.ts +9 -0
  67. package/src/Player/service/PlayerRemoveLoadingElementService.js +18 -0
  68. package/src/Player/service/PlayerRenderingPostMessageService.d.ts +14 -0
  69. package/src/Player/service/PlayerRenderingPostMessageService.js +74 -0
  70. package/src/Player/service/PlayerResizePostMessageService.d.ts +10 -0
  71. package/src/Player/service/PlayerResizePostMessageService.js +40 -0
  72. package/src/Player/service/PlayerSetCurrentMousePointService.d.ts +10 -0
  73. package/src/Player/service/PlayerSetCurrentMousePointService.js +33 -0
  74. package/src/Player/service/PlayerStopService.d.ts +9 -0
  75. package/src/Player/service/PlayerStopService.js +18 -0
  76. package/src/Player/service/PlayerTransferCanvasPostMessageService.d.ts +13 -0
  77. package/src/Player/service/PlayerTransferCanvasPostMessageService.js +80 -0
  78. package/src/Player/usecase/PlayerBootUseCase.d.ts +11 -0
  79. package/src/Player/usecase/PlayerBootUseCase.js +30 -0
  80. package/src/Player/usecase/PlayerHitTestUseCase.d.ts +9 -0
  81. package/src/Player/usecase/PlayerHitTestUseCase.js +35 -0
  82. package/src/Player/usecase/PlayerPlayUseCase.d.ts +9 -0
  83. package/src/Player/usecase/PlayerPlayUseCase.js +26 -0
  84. package/src/Player/usecase/PlayerReadyCompleteUseCase.d.ts +5 -0
  85. package/src/Player/usecase/PlayerReadyCompleteUseCase.js +16 -0
  86. package/src/Player/usecase/PlayerRegisterEventUseCase.d.ts +9 -0
  87. package/src/Player/usecase/PlayerRegisterEventUseCase.js +15 -0
  88. package/src/Player/usecase/PlayerResizeEventUseCase.d.ts +9 -0
  89. package/src/Player/usecase/PlayerResizeEventUseCase.js +78 -0
  90. package/src/Player/usecase/PlayerResizeRegisterUseCase.d.ts +9 -0
  91. package/src/Player/usecase/PlayerResizeRegisterUseCase.js +20 -0
  92. package/src/Player/usecase/PlayerTickerUseCase.d.ts +10 -0
  93. package/src/Player/usecase/PlayerTickerUseCase.js +50 -0
  94. package/src/Player.d.ts +193 -0
  95. package/src/Player.js +314 -0
  96. package/src/RendererWorker.d.ts +5 -0
  97. package/src/RendererWorker.js +7 -0
  98. package/src/Text.d.ts +3 -0
  99. package/{dist → src}/Text.js +3 -2
  100. package/src/UI.d.ts +3 -0
  101. package/{dist → src}/UI.js +1 -2
  102. package/{dist → src}/index.d.ts +1 -0
  103. package/{dist → src}/index.js +1 -0
  104. package/src/interface/ICaptureMessage.d.ts +8 -0
  105. package/src/interface/ICaptureMessage.js +1 -0
  106. package/src/interface/ICaptureOptions.d.ts +7 -0
  107. package/src/interface/ICaptureOptions.js +1 -0
  108. package/src/interface/IDisplay.d.ts +15 -0
  109. package/src/interface/IDisplay.js +1 -0
  110. package/src/interface/IDisplayObject.d.ts +2 -0
  111. package/src/interface/IDisplayObject.js +1 -0
  112. package/src/interface/IEvents.d.ts +13 -0
  113. package/src/interface/IEvents.js +1 -0
  114. package/src/interface/IFilters.d.ts +12 -0
  115. package/src/interface/IFilters.js +1 -0
  116. package/src/interface/IGeom.d.ts +7 -0
  117. package/src/interface/IGeom.js +1 -0
  118. package/src/interface/IMedia.d.ts +7 -0
  119. package/src/interface/IMedia.js +1 -0
  120. package/src/interface/INet.d.ts +4 -0
  121. package/src/interface/INet.js +1 -0
  122. package/src/interface/IPlayerHitObject.d.ts +7 -0
  123. package/src/interface/IPlayerHitObject.js +1 -0
  124. package/src/interface/IPlayerOptions.d.ts +7 -0
  125. package/src/interface/IPlayerOptions.js +1 -0
  126. package/src/interface/IRemoveCacheMessage.d.ts +4 -0
  127. package/src/interface/IRemoveCacheMessage.js +1 -0
  128. package/src/interface/IRenderMessage.d.ts +6 -0
  129. package/src/interface/IRenderMessage.js +1 -0
  130. package/src/interface/IResizeMessage.d.ts +4 -0
  131. package/src/interface/IResizeMessage.js +1 -0
  132. package/src/interface/IStageData.d.ts +6 -0
  133. package/src/interface/IStageData.js +1 -0
  134. package/src/interface/IText.d.ts +6 -0
  135. package/src/interface/IText.js +1 -0
  136. package/src/interface/IUI.d.ts +5 -0
  137. package/src/interface/IUI.js +1 -0
  138. package/dist/Display.d.ts +0 -3
  139. package/dist/Events.d.ts +0 -3
  140. package/dist/Filters.d.ts +0 -3
  141. package/dist/Geom.d.ts +0 -3
  142. package/dist/Media.d.ts +0 -3
  143. package/dist/Net.d.ts +0 -3
  144. package/dist/Next2D.d.ts +0 -62
  145. package/dist/Next2D.js +0 -198
  146. package/dist/Player.d.ts +0 -336
  147. package/dist/Player.js +0 -1879
  148. package/dist/Text.d.ts +0 -3
  149. package/dist/UI.d.ts +0 -3
  150. /package/{dist → src}/Filters.js +0 -0
  151. /package/{dist → src}/Media.js +0 -0
package/dist/Player.js DELETED
@@ -1,1879 +0,0 @@
1
- import { Stage } from "@next2d/display";
2
- import { Event as Next2DEvent, MouseEvent as Next2DMouseEvent, EventPhase } from "@next2d/events";
3
- import { SoundMixer } from "@next2d/media";
4
- import { CanvasToWebGLContext } from "@next2d/webgl";
5
- import { $document, $window, $rendererWorker, $PREFIX, $audioContext, $TOUCH_START, $TOUCH_MOVE, $TOUCH_END, $MOUSE_DOWN, $MOUSE_MOVE, $MOUSE_UP, $MOUSE_WHEEL, $DOUBLE_CLICK, $MOUSE_LEAVE, $loadAudioData, $MATRIX_HIT_ARRAY_IDENTITY, $hitContext, $isTouch, $dropTarget, $dragRules, $isSafari, $getEvent, $setEvent, $setEventType, $setCurrentLoaderInfo, $getEventType, $getRenderBufferArray, $getRenderMessageObject, $poolRenderMessageObject, $textArea } from "@next2d/util";
6
- import { $Math, $performance, $COLOR_ARRAY_IDENTITY, $doUpdated, $isUpdated, $getArray, $getFloat32Array6, $getMap, $uintToRGBA, $toColorInt, $requestAnimationFrame, $cancelAnimationFrame, $poolArray, $clamp, $devicePixelRatio, $setDevicePixelRatio, $cacheStore } from "@next2d/share";
7
- /**
8
- * 描画のイベントや設定やコントロールの管理クラス
9
- * Management classes for drawing events, settings and controls
10
- *
11
- * @class
12
- */
13
- export class Player {
14
- /**
15
- * @constructor
16
- * @public
17
- */
18
- constructor() {
19
- // init
20
- $setDevicePixelRatio(window.devicePixelRatio);
21
- /**
22
- * @type {Stage}
23
- * @private
24
- */
25
- this._$stage = new Stage();
26
- this._$stage._$player = this;
27
- /**
28
- * @type {string}
29
- * @private
30
- */
31
- this._$mode = "loader";
32
- /**
33
- * @type {number}
34
- * @private
35
- */
36
- this._$actionOffset = 0;
37
- /**
38
- * @type {array}
39
- * @private
40
- */
41
- this._$actions = $getArray();
42
- /**
43
- * @type {array}
44
- * @public
45
- */
46
- this._$loaders = $getArray();
47
- /**
48
- * @type {Map}
49
- * @private
50
- */
51
- this._$sounds = $getMap();
52
- /**
53
- * @type {object}
54
- * @private
55
- */
56
- this._$hitObject = {
57
- "x": 0,
58
- "y": 0,
59
- "pointer": "",
60
- "hit": null
61
- };
62
- /**
63
- * @type {DisplayObject}
64
- * @default null
65
- * @private
66
- */
67
- this._$rollOverObject = null;
68
- /**
69
- * @type {DisplayObject}
70
- * @default null
71
- * @private
72
- */
73
- this._$mouseOverTarget = null;
74
- /**
75
- * @type {number}
76
- * @private
77
- */
78
- this._$ratio = $devicePixelRatio;
79
- /**
80
- * @type {boolean}
81
- * @default true
82
- * @private
83
- */
84
- this._$stopFlag = true;
85
- /**
86
- * @type {number}
87
- * @default 0
88
- * @private
89
- */
90
- this._$startTime = 0;
91
- /**
92
- * @type {number}
93
- * @default 16
94
- * @private
95
- */
96
- this._$fps = 16;
97
- /**
98
- * @type {number}
99
- * @default 0
100
- * @private
101
- */
102
- this._$loadStatus = 0;
103
- /**
104
- * @type {number}
105
- * @default 0
106
- * @private
107
- */
108
- this._$width = 0;
109
- /**
110
- * @type {number}
111
- * @default 0
112
- * @private
113
- */
114
- this._$height = 0;
115
- /**
116
- * @type {number}
117
- * @default 0
118
- * @private
119
- */
120
- this._$baseWidth = 0;
121
- /**
122
- * @type {number}
123
- * @default 0
124
- * @private
125
- */
126
- this._$baseHeight = 0;
127
- /**
128
- * @type {number}
129
- * @default 1
130
- * @private
131
- */
132
- this._$scale = 1;
133
- /**
134
- * @type {Float32Array}
135
- * @private
136
- */
137
- this._$matrix = $getFloat32Array6(1, 0, 0, 1, 0, 0); // fixed size 6
138
- /**
139
- * @type {number}
140
- * @default 0
141
- * @private
142
- */
143
- this._$tx = 0;
144
- /**
145
- * @type {number}
146
- * @default 0
147
- * @private
148
- */
149
- this._$ty = 0;
150
- /**
151
- * @type {string}
152
- * @default up
153
- * @private
154
- */
155
- this._$state = "up";
156
- /**
157
- * @type {boolean}
158
- * @default false
159
- * @private
160
- */
161
- this._$hitTestStart = false;
162
- /**
163
- * @type {number}
164
- * @default -1
165
- * @private
166
- */
167
- this._$stageX = -1;
168
- /**
169
- * @type {number}
170
- * @default -1
171
- * @private
172
- */
173
- this._$stageY = -1;
174
- /**
175
- * @type {number}
176
- * @default 0
177
- * @private
178
- */
179
- this._$deltaX = 0;
180
- /**
181
- * @type {number}
182
- * @default 0
183
- * @private
184
- */
185
- this._$deltaY = 0;
186
- /**
187
- * @type {Map}
188
- * @private
189
- */
190
- this._$broadcastEvents = $getMap();
191
- /**
192
- * @type {number}
193
- * @default 0
194
- * @private
195
- */
196
- this._$optionWidth = 0;
197
- /**
198
- * @type {number}
199
- * @default 0
200
- * @private
201
- */
202
- this._$optionHeight = 0;
203
- /**
204
- * @type {string}
205
- * @default ""
206
- * @private
207
- */
208
- this._$tagId = "";
209
- /**
210
- * @type {string}
211
- * @default "transparent"
212
- * @private
213
- */
214
- this._$bgColor = "transparent";
215
- /**
216
- * @type {string}
217
- * @default ""
218
- * @private
219
- */
220
- this._$base = "";
221
- /**
222
- * @type {boolean}
223
- * @default false
224
- * @private
225
- */
226
- this._$fullScreen = false;
227
- /**
228
- * @type {string}
229
- * @default high
230
- * @private
231
- */
232
- this._$quality = "high";
233
- /**
234
- * @type {array}
235
- * @private
236
- */
237
- this._$sources = $getArray();
238
- /**
239
- * @type {array}
240
- * @private
241
- */
242
- this._$videos = $getArray();
243
- /**
244
- * @type {TextField}
245
- * @default null
246
- * @private
247
- */
248
- this._$textField = null;
249
- /**
250
- * @type {number}
251
- * @default -1
252
- * @private
253
- */
254
- this._$timerId = -1;
255
- /**
256
- * @type {number}
257
- * @default -1
258
- * @private
259
- */
260
- this._$loadId = -1;
261
- /**
262
- * @type {CanvasToWebGLContext}
263
- * @default null
264
- * @private
265
- */
266
- this._$context = null;
267
- /**
268
- * @type {AttachmentImpl}
269
- * @default null
270
- * @private
271
- */
272
- this._$attachment = null;
273
- /**
274
- * @type {DisplayObject}
275
- * @default null
276
- * @private
277
- */
278
- this._$clickTarget = null;
279
- /**
280
- * @type {boolean}
281
- * @default false
282
- * @private
283
- */
284
- this._$actionProcess = false;
285
- /**
286
- * @type {HTMLCanvasElement}
287
- * @private
288
- */
289
- this._$canvas = $document.createElement("canvas");
290
- }
291
- /**
292
- * @return {number}
293
- * @default 1
294
- * @const
295
- * @static
296
- */
297
- static get LOAD_START() {
298
- return 1;
299
- }
300
- /**
301
- * @return {number}
302
- * @default 2
303
- * @const
304
- * @static
305
- */
306
- static get LOAD_END() {
307
- return 2;
308
- }
309
- /**
310
- * @return {CacheStore}
311
- * @readonly
312
- * @public
313
- */
314
- get cacheStore() {
315
- return $cacheStore;
316
- }
317
- /**
318
- * @type {HTMLCanvasElement}
319
- * @readonly
320
- * @public
321
- */
322
- get canvas() {
323
- return this._$canvas;
324
- }
325
- /**
326
- * @return {Map}
327
- * @readonly
328
- * @public
329
- */
330
- get broadcastEvents() {
331
- return this._$broadcastEvents;
332
- }
333
- /**
334
- * @member {CanvasToWebGLContext|null}
335
- * @default null
336
- * @public
337
- */
338
- get context() {
339
- return this._$context;
340
- }
341
- set context(context) {
342
- this._$context = context;
343
- }
344
- /**
345
- * @member {string}
346
- * @default ""
347
- * @public
348
- */
349
- get base() {
350
- return this._$base;
351
- }
352
- set base(base) {
353
- if (base.indexOf("//") === -1) {
354
- const urls = base.split("/");
355
- if (urls[0] === "" || urls[0] === ".") {
356
- urls.shift();
357
- }
358
- urls.pop();
359
- this._$base = `${location.origin}/`;
360
- if (urls.length) {
361
- this._$base += `${urls.join("/")}/`;
362
- }
363
- }
364
- else {
365
- if (base.indexOf("?") === -1) {
366
- this._$base = base.slice(-1) === "/" ? base : `${base}/`;
367
- }
368
- else {
369
- const path = base.split("?")[0];
370
- this._$base = path.slice(-1) === "/" ? path : `${path}/`;
371
- }
372
- }
373
- }
374
- /**
375
- * @return {Stage}
376
- * @readonly
377
- * @public
378
- */
379
- get stage() {
380
- return this._$stage;
381
- }
382
- /**
383
- * @member {number}
384
- * @readonly
385
- * @public
386
- */
387
- get x() {
388
- return this._$tx;
389
- }
390
- /**
391
- * @member {number}
392
- * @readonly
393
- * @public
394
- */
395
- get y() {
396
- return this._$ty;
397
- }
398
- /**
399
- * @member {number}
400
- * @readonly
401
- * @public
402
- */
403
- get scaleX() {
404
- return this._$matrix[0];
405
- }
406
- /**
407
- * @member {number}
408
- * @readonly
409
- * @public
410
- */
411
- get scaleY() {
412
- return this._$matrix[3];
413
- }
414
- /**
415
- * @member {number}
416
- * @readonly
417
- * @public
418
- */
419
- get tx() {
420
- return this._$matrix[4] / this._$scale / $devicePixelRatio;
421
- }
422
- /**
423
- * @member {number}
424
- * @readonly
425
- * @public
426
- */
427
- get ty() {
428
- return this._$matrix[5] / this._$scale / $devicePixelRatio;
429
- }
430
- /**
431
- * @member {string}
432
- * @public
433
- */
434
- get mode() {
435
- return this._$mode;
436
- }
437
- set mode(mode) {
438
- this._$mode = mode;
439
- }
440
- /**
441
- * @return {string}
442
- * @readonly
443
- * @public
444
- */
445
- get contentElementId() {
446
- return $PREFIX;
447
- }
448
- /**
449
- * @member {number}
450
- * @public
451
- */
452
- get width() {
453
- return this._$baseWidth;
454
- }
455
- set width(width) {
456
- this._$baseWidth = width | 0;
457
- }
458
- /**
459
- * @member {number}
460
- * @public
461
- */
462
- get height() {
463
- return this._$baseHeight;
464
- }
465
- set height(height) {
466
- this._$baseHeight = height | 0;
467
- }
468
- /**
469
- * @member {string}
470
- * @public
471
- */
472
- get bgColor() {
473
- return this._$bgColor;
474
- }
475
- set bgColor(bg_color) {
476
- this._$bgColor = `${bg_color}`;
477
- }
478
- /**
479
- * @return {void}
480
- * @method
481
- * @public
482
- */
483
- play() {
484
- if (this._$stopFlag) {
485
- this._$stopFlag = false;
486
- if (this._$timerId > -1) {
487
- $cancelAnimationFrame(this._$timerId);
488
- }
489
- this._$startTime = $performance.now();
490
- const frameRate = this._$stage._$frameRate;
491
- this._$fps = 1000 / frameRate | 0;
492
- this._$timerId = $requestAnimationFrame((timestamp) => {
493
- this._$run(timestamp);
494
- });
495
- }
496
- }
497
- /**
498
- * @return {void}
499
- * @method
500
- * @public
501
- */
502
- stop() {
503
- if (this._$timerId > -1) {
504
- $cancelAnimationFrame(this._$timerId);
505
- }
506
- this._$stopFlag = true;
507
- this._$timerId = -1;
508
- SoundMixer.stopAll();
509
- $cacheStore.reset();
510
- if ($rendererWorker) {
511
- $rendererWorker.postMessage({
512
- "command": "stop"
513
- });
514
- }
515
- }
516
- /**
517
- * @param {string} id
518
- * @return {void}
519
- * @method
520
- * @public
521
- */
522
- removeCache(id) {
523
- $cacheStore.removeCache(id);
524
- if ($rendererWorker) {
525
- $rendererWorker.postMessage({
526
- "command": "removeCache",
527
- "id": id
528
- });
529
- }
530
- }
531
- /**
532
- * @param {object} [options=null]
533
- * @return {void}
534
- * @public
535
- */
536
- setOptions(options = null) {
537
- if (options) {
538
- this._$optionWidth = options.width || this._$optionWidth;
539
- this._$optionHeight = options.height || this._$optionHeight;
540
- this._$tagId = options.tagId || this._$tagId;
541
- this.base = options.base || this._$base;
542
- this._$bgColor = options.bgColor || this._$bgColor;
543
- this._$fullScreen = !!options.fullScreen;
544
- }
545
- }
546
- /**
547
- * @description NoCode Toolからのアクセスのみ
548
- * Access from NoCode Tool only
549
- *
550
- * @param {MouseEvent} [event = null]
551
- * @return {void}
552
- * @method
553
- * @private
554
- */
555
- _$loadWebAudio(event = null) {
556
- if (event) {
557
- // @ts-ignore
558
- this._$canvas.removeEventListener($MOUSE_UP, this._$loadWebAudio);
559
- }
560
- if (!$audioContext) {
561
- $loadAudioData();
562
- }
563
- }
564
- /**
565
- * @return {void}
566
- * @method
567
- * @private
568
- */
569
- _$updateLoadStatus() {
570
- if (this._$loadStatus === Player.LOAD_END) {
571
- if (this._$loadId > -1) {
572
- $cancelAnimationFrame(this._$loadId);
573
- }
574
- this._$loadId = -1;
575
- this._$loaded();
576
- return;
577
- }
578
- this._$loadId = $requestAnimationFrame(() => {
579
- this._$updateLoadStatus();
580
- });
581
- }
582
- /**
583
- * @return {void}
584
- * @method
585
- * @private
586
- */
587
- _$loaded() {
588
- const element = $document
589
- .getElementById(this.contentElementId);
590
- if (element) {
591
- // background color
592
- this._$setBackgroundColor(this._$bgColor);
593
- // DOM
594
- this._$deleteNode();
595
- // append canvas
596
- element.appendChild(this._$canvas);
597
- element.appendChild($textArea);
598
- // stage init action
599
- this._$stage._$prepareActions();
600
- // constructed event
601
- if (this._$broadcastEvents.has(Next2DEvent.FRAME_CONSTRUCTED)) {
602
- this._$dispatchEvent(new Next2DEvent(Next2DEvent.FRAME_CONSTRUCTED));
603
- }
604
- // frame1 action
605
- this._$doAction();
606
- // exit event
607
- if (this._$broadcastEvents.has(Next2DEvent.EXIT_FRAME)) {
608
- this._$dispatchEvent(new Next2DEvent(Next2DEvent.EXIT_FRAME));
609
- }
610
- // loader events
611
- const length = this._$loaders.length;
612
- for (let idx = 0; idx < length; ++idx) {
613
- const loader = this._$loaders.shift();
614
- // init event
615
- if (loader.hasEventListener(Next2DEvent.INIT)) {
616
- loader.dispatchEvent(new Next2DEvent(Next2DEvent.INIT));
617
- }
618
- // complete event
619
- if (loader.hasEventListener(Next2DEvent.COMPLETE)) {
620
- loader.dispatchEvent(new Next2DEvent(Next2DEvent.COMPLETE));
621
- }
622
- }
623
- // activate event
624
- if (this._$broadcastEvents.has(Next2DEvent.ACTIVATE)) {
625
- this._$dispatchEvent(new Next2DEvent(Next2DEvent.ACTIVATE));
626
- }
627
- // frame action
628
- this._$doAction();
629
- // render
630
- this._$draw();
631
- // start
632
- this.play();
633
- }
634
- }
635
- /**
636
- * @return {void}
637
- * @method
638
- * @private
639
- */
640
- _$initialize() {
641
- const contentElementId = this.contentElementId;
642
- if (!this._$tagId) {
643
- $document
644
- .body
645
- .insertAdjacentHTML("beforeend", `<div id="${contentElementId}" tabindex="-1"></div>`);
646
- }
647
- else {
648
- const container = $document.getElementById(this._$tagId);
649
- if (!container) {
650
- alert("Not Found Tag ID:" + this._$tagId);
651
- return;
652
- }
653
- const div = $document.getElementById(contentElementId);
654
- if (!div) {
655
- const element = $document.createElement("div");
656
- element.id = contentElementId;
657
- element.tabIndex = -1;
658
- container.appendChild(element);
659
- }
660
- else {
661
- this._$deleteNode();
662
- }
663
- }
664
- const element = $document.getElementById(contentElementId);
665
- if (!element) {
666
- throw new Error("the content element is null.");
667
- }
668
- const parent = element.parentElement;
669
- if (parent) {
670
- this._$initStyle(element);
671
- this._$buildWait();
672
- const width = this._$optionWidth
673
- ? this._$optionWidth
674
- : parent.tagName === "BODY"
675
- ? $window.innerWidth
676
- : parent.offsetWidth;
677
- const height = this._$optionHeight
678
- ? this._$optionHeight
679
- : parent.tagName === "BODY"
680
- ? $window.innerHeight
681
- : parent.offsetHeight;
682
- // set center
683
- if (this._$mode === "loader" && width && height) {
684
- this._$baseWidth = width;
685
- this._$baseHeight = height;
686
- this._$resize();
687
- }
688
- }
689
- if (this._$mode === "loader") {
690
- this._$loadStatus = Player.LOAD_START;
691
- this._$updateLoadStatus();
692
- }
693
- else {
694
- this._$resize();
695
- this._$loaded();
696
- }
697
- }
698
- /**
699
- * @param {object} element
700
- * @returns {void}
701
- * @method
702
- * @private
703
- */
704
- _$initStyle(element) {
705
- const style = element.style;
706
- // set css
707
- style.position = "relative";
708
- style.top = "0";
709
- style.left = "0";
710
- style.backgroundColor = "transparent";
711
- style.overflow = "hidden";
712
- style.padding = "0";
713
- style.margin = "0";
714
- style.userSelect = "none";
715
- style.outline = "none";
716
- const width = this._$optionWidth;
717
- const height = this._$optionHeight;
718
- const parent = element.parentElement;
719
- if (!parent) {
720
- throw new Error("the parentElement is null.");
721
- }
722
- if (parent.tagName === "BODY") {
723
- style.width = width ? `${width}px` : `${window.innerWidth}px`;
724
- style.height = height ? `${height}px` : `${window.innerHeight}px`;
725
- return;
726
- }
727
- style.width = width ? `${width}px` : `${parent.offsetWidth}px`;
728
- style.height = height ? `${height}px` : `${parent.offsetHeight}px`;
729
- }
730
- /**
731
- * @return {void}
732
- * @method
733
- * @private
734
- */
735
- _$buildWait() {
736
- const element = $document
737
- .getElementById(this.contentElementId);
738
- if (element) {
739
- const loadingId = `${this.contentElementId}_loading`;
740
- element.innerHTML = `<style>
741
- #${loadingId} {
742
- position: absolute;
743
- top: 50%;
744
- left: 50%;
745
- margin: -24px 0 0 -24px;
746
- width: 50px;
747
- height: 50px;
748
- border-radius: 50px;
749
- border: 8px solid #dcdcdc;
750
- border-right-color: transparent;
751
- box-sizing: border-box;
752
- animation: ${loadingId} 0.8s infinite linear;
753
- }
754
- @keyframes ${loadingId} {
755
- 0% {
756
- transform: rotate(0deg);
757
- }
758
- 100% {
759
- transform: rotate(360deg);
760
- }
761
- }
762
- </style>`;
763
- const div = $document.createElement("div");
764
- div.id = loadingId;
765
- element.appendChild(div);
766
- }
767
- }
768
- /**
769
- * @returns {void}
770
- * @method
771
- * @private
772
- */
773
- _$deleteNode() {
774
- const element = $document.getElementById(this.contentElementId);
775
- if (element) {
776
- while (element.childNodes.length) {
777
- element.removeChild(element.childNodes[0]);
778
- }
779
- }
780
- }
781
- /**
782
- * @return {void}
783
- * @private
784
- */
785
- _$initializeCanvas() {
786
- // main canvas
787
- this._$canvas.width = 1;
788
- this._$canvas.height = 1;
789
- if ($rendererWorker) {
790
- const offscreenCanvas = this
791
- ._$canvas
792
- .transferControlToOffscreen();
793
- const buffer = $getRenderBufferArray();
794
- let index = 0;
795
- buffer[index++] = this._$stage._$instanceId;
796
- buffer[index++] = +$isSafari;
797
- buffer[index++] = $devicePixelRatio;
798
- buffer[index++] = this._$getSamples();
799
- const options = $getArray(offscreenCanvas, buffer.buffer);
800
- $rendererWorker.postMessage({
801
- "command": "initialize",
802
- "canvas": offscreenCanvas,
803
- "buffer": buffer
804
- }, options);
805
- $poolArray(options);
806
- }
807
- else {
808
- // create gl context
809
- const gl = this._$canvas.getContext("webgl2", {
810
- "stencil": true,
811
- "premultipliedAlpha": true,
812
- "antialias": false,
813
- "depth": false,
814
- "preserveDrawingBuffer": true
815
- });
816
- if (gl) {
817
- this._$context = new CanvasToWebGLContext(gl, this._$getSamples());
818
- $cacheStore.context = this._$context;
819
- }
820
- else {
821
- alert("WebGL setting is off. Please turn the setting on.");
822
- }
823
- }
824
- /**
825
- * @return {void}
826
- * @method
827
- * @private
828
- */
829
- const loadWebAudio = () => {
830
- this._$canvas.removeEventListener($MOUSE_UP, loadWebAudio);
831
- this._$canvas.removeEventListener($TOUCH_END, loadWebAudio);
832
- if (!$audioContext) {
833
- $loadAudioData();
834
- for (let idx = 0; idx < this._$videos.length; ++idx) {
835
- const video = this._$videos[idx];
836
- if (!video._$video) {
837
- continue;
838
- }
839
- video._$video.muted = false;
840
- }
841
- }
842
- };
843
- // @ts-ignore
844
- this._$canvas.addEventListener($TOUCH_END, loadWebAudio);
845
- // @ts-ignore
846
- this._$canvas.addEventListener($MOUSE_UP, loadWebAudio);
847
- // touch event
848
- this._$canvas.addEventListener($TOUCH_START, (event) => {
849
- $setEvent(event);
850
- $setEventType($TOUCH_START);
851
- // start position
852
- this._$hitTest();
853
- });
854
- this._$canvas.addEventListener($TOUCH_MOVE, (event) => {
855
- $setEvent(event);
856
- $setEventType($TOUCH_MOVE);
857
- this._$hitTest();
858
- });
859
- this._$canvas.addEventListener($TOUCH_END, (event) => {
860
- $setEvent(event);
861
- $setEventType($TOUCH_END);
862
- this._$hitTest();
863
- });
864
- // mouse wheel
865
- this._$canvas.addEventListener($TOUCH_MOVE, (event) => {
866
- $setEvent(event);
867
- $setEventType($TOUCH_MOVE);
868
- this._$hitTest();
869
- }, { "passive": false });
870
- // mouse event
871
- this._$canvas.addEventListener($MOUSE_DOWN, (event) => {
872
- $setEvent(event);
873
- $setEventType($MOUSE_DOWN);
874
- if (!event.button) {
875
- this._$hitTest();
876
- }
877
- });
878
- this._$canvas.addEventListener($DOUBLE_CLICK, (event) => {
879
- $setEvent(event);
880
- $setEventType($DOUBLE_CLICK);
881
- if (!event.button) {
882
- this._$hitTest();
883
- }
884
- });
885
- this._$canvas.addEventListener($MOUSE_LEAVE, (event) => {
886
- $setEvent(event);
887
- $setEventType($MOUSE_LEAVE);
888
- this._$hitTest();
889
- $setEvent(null);
890
- this._$stageX = -1;
891
- this._$stageY = -1;
892
- });
893
- this._$canvas.addEventListener($MOUSE_UP, (event) => {
894
- $setEvent(event);
895
- $setEventType($MOUSE_UP);
896
- if (!event.button) {
897
- this._$hitTest();
898
- }
899
- });
900
- this._$canvas.addEventListener($MOUSE_MOVE, (event) => {
901
- $setEvent(event);
902
- $setEventType($MOUSE_MOVE);
903
- this._$hitTest();
904
- });
905
- // mouse wheel
906
- this._$canvas.addEventListener($MOUSE_WHEEL, (event) => {
907
- if (!event.defaultPrevented) {
908
- $setEvent(event);
909
- $setEventType($MOUSE_WHEEL);
910
- this._$hitTest();
911
- }
912
- }, { "passive": false });
913
- // set css
914
- let style = "";
915
- style += "position: absolute;";
916
- style += "top: 0;";
917
- style += "left: 0;";
918
- style += "-webkit-tap-highlight-color: rgba(0,0,0,0);";
919
- style += "backface-visibility: hidden;";
920
- style += "transform-origin: 0 0;";
921
- if ($devicePixelRatio !== 1) {
922
- style += `transform: scale(${1 / $devicePixelRatio});`;
923
- }
924
- this._$canvas.setAttribute("style", style);
925
- }
926
- /**
927
- * @return {void}
928
- * @method
929
- * @private
930
- */
931
- _$resize() {
932
- const div = $document
933
- .getElementById(this.contentElementId);
934
- if (div) {
935
- const parent = div.parentElement;
936
- if (!parent) {
937
- throw new Error("the parentElement is null.");
938
- }
939
- const innerWidth = this._$optionWidth
940
- ? this._$optionWidth
941
- : parent.tagName === "BODY"
942
- ? $window.innerWidth
943
- : parent.offsetWidth
944
- ? parent.offsetWidth
945
- : parseFloat(parent.style.width);
946
- const innerHeight = this._$optionHeight
947
- ? this._$optionHeight
948
- : parent.tagName === "BODY"
949
- ? $window.innerHeight
950
- : parent.offsetHeight
951
- ? parent.offsetHeight
952
- : parseFloat(parent.style.height);
953
- const screenWidth = parent.tagName === "BODY"
954
- ? $window.innerWidth
955
- : parent.offsetWidth;
956
- const scale = $Math.min(innerWidth / this._$baseWidth, innerHeight / this._$baseHeight);
957
- let width = this._$fullScreen
958
- ? innerWidth
959
- : this._$baseWidth * scale | 0;
960
- let height = this._$fullScreen
961
- ? innerHeight
962
- : this._$baseHeight * scale | 0;
963
- // div
964
- const style = div.style;
965
- style.width = `${width}px`;
966
- style.height = `${height}px`;
967
- style.top = "0";
968
- style.left = this._$fullScreen
969
- ? "0"
970
- : `${screenWidth / 2 - width / 2}px`;
971
- width *= $devicePixelRatio;
972
- height *= $devicePixelRatio;
973
- // no resize
974
- if (this._$width === width && this._$height === height) {
975
- return;
976
- }
977
- // cache reset
978
- this._$stage._$doChanged();
979
- $cacheStore.reset();
980
- // params
981
- this._$scale = scale;
982
- this._$width = width;
983
- this._$height = height;
984
- const mScale = this._$scale * this._$ratio;
985
- this._$matrix[0] = mScale;
986
- this._$matrix[3] = mScale;
987
- if (this._$fullScreen) {
988
- this._$tx = (width -
989
- this._$baseWidth
990
- * scale
991
- * $devicePixelRatio) / 2;
992
- this._$ty = (height -
993
- this._$baseHeight
994
- * scale
995
- * $devicePixelRatio) / 2;
996
- this._$matrix[4] = this._$tx;
997
- this._$matrix[5] = this._$ty;
998
- }
999
- // main canvas resize
1000
- this._$resizeCanvas(width, height, mScale, this._$tx, this._$ty);
1001
- if (this._$ratio > 1 && $devicePixelRatio > 1) {
1002
- this._$canvas.style.transform = `scale(${1 / this._$ratio})`;
1003
- }
1004
- if (div.children.length > 1) {
1005
- div.children[1].dispatchEvent(new Event(`${$PREFIX}_blur`));
1006
- }
1007
- }
1008
- }
1009
- /**
1010
- * @description 表示用のcanvasを更新
1011
- * Update canvas for display
1012
- *
1013
- * @param {string} [background_color=transparent]
1014
- * @return {void}
1015
- * @method
1016
- * @public
1017
- */
1018
- _$setBackgroundColor(background_color = "transparent") {
1019
- if ($rendererWorker) {
1020
- const buffer = $getRenderBufferArray();
1021
- buffer[0] = background_color === "transparent"
1022
- ? -1
1023
- : $toColorInt(background_color);
1024
- const message = $getRenderMessageObject();
1025
- message.command = "setBackgroundColor";
1026
- message.buffer = buffer;
1027
- const options = $getArray(buffer.buffer);
1028
- $rendererWorker.postMessage(message, options);
1029
- $poolRenderMessageObject(message);
1030
- $poolArray(options);
1031
- }
1032
- else {
1033
- const context = this._$context;
1034
- if (!context) {
1035
- return;
1036
- }
1037
- if (background_color === "transparent") {
1038
- context._$setColor(0, 0, 0, 0);
1039
- }
1040
- else {
1041
- const color = $uintToRGBA($toColorInt(background_color));
1042
- context._$setColor(color.R / 255, color.G / 255, color.B / 255, 1);
1043
- }
1044
- }
1045
- }
1046
- /**
1047
- * @param {number} width
1048
- * @param {number} height
1049
- * @param {number} scale
1050
- * @param {number} [tx = 0]
1051
- * @param {number} [ty = 0]
1052
- * @return {void}
1053
- * @method
1054
- * @private
1055
- */
1056
- _$resizeCanvas(width, height, scale, tx = 0, ty = 0) {
1057
- if ($rendererWorker) {
1058
- const buffer = $getRenderBufferArray();
1059
- let index = 0;
1060
- buffer[index++] = width;
1061
- buffer[index++] = height;
1062
- buffer[index++] = scale;
1063
- buffer[index++] = tx;
1064
- buffer[index++] = ty;
1065
- const message = $getRenderMessageObject();
1066
- const options = $getArray(buffer.buffer);
1067
- message.command = "resize";
1068
- message.buffer = buffer;
1069
- $rendererWorker.postMessage(message, options);
1070
- // reset
1071
- $poolRenderMessageObject(message);
1072
- $poolArray(options);
1073
- }
1074
- else {
1075
- const context = this._$context;
1076
- if (!context) { // unit test
1077
- return;
1078
- }
1079
- context.clearInstacedArray();
1080
- this._$canvas.width = width;
1081
- this._$canvas.height = height;
1082
- context._$gl.viewport(0, 0, width, height);
1083
- const manager = context.frameBuffer;
1084
- if (this._$attachment) {
1085
- manager.unbind();
1086
- manager.releaseAttachment(this._$attachment, true);
1087
- }
1088
- this._$attachment = manager
1089
- .createCacheAttachment(width, height, true);
1090
- // update cache max size
1091
- context.setMaxSize(width, height);
1092
- context._$bind(this._$attachment);
1093
- }
1094
- }
1095
- /**
1096
- * @return {number}
1097
- * @method
1098
- * @private
1099
- */
1100
- _$getSamples() {
1101
- switch (this._$quality) {
1102
- case "high":
1103
- return 4;
1104
- case "medium":
1105
- return 2;
1106
- default:
1107
- return 0;
1108
- }
1109
- }
1110
- /**
1111
- * @param {Event} event
1112
- * @return {boolean}
1113
- * @method
1114
- * @private
1115
- */
1116
- _$dispatchEvent(event) {
1117
- if (this._$broadcastEvents.size
1118
- && this._$broadcastEvents.has(event.type)) {
1119
- // clone
1120
- const events = this
1121
- ._$broadcastEvents
1122
- .get(event.type)
1123
- .slice(0);
1124
- // start target
1125
- event.eventPhase = EventPhase.AT_TARGET;
1126
- for (let idx = 0; idx < events.length; ++idx) {
1127
- const obj = events[idx];
1128
- // event execute
1129
- event.currentTarget = obj.target;
1130
- event.listener = obj.listener;
1131
- obj.listener.call(null, event);
1132
- if (event._$stopImmediatePropagation) {
1133
- break;
1134
- }
1135
- }
1136
- $poolArray(events);
1137
- return true;
1138
- }
1139
- return false;
1140
- }
1141
- /**
1142
- * @param {number} timestamp
1143
- * @return {void}
1144
- * @method
1145
- * @private
1146
- */
1147
- _$run(timestamp = 0) {
1148
- if (this._$stopFlag) {
1149
- return;
1150
- }
1151
- // delay action
1152
- this._$doAction();
1153
- const delta = timestamp - this._$startTime;
1154
- if (delta > this._$fps) {
1155
- // update
1156
- this._$startTime = timestamp - delta % this._$fps;
1157
- // execute
1158
- this._$action();
1159
- // start sound
1160
- if (this._$sounds.size) {
1161
- for (const movieClip of this._$sounds.values()) {
1162
- movieClip._$soundPlay();
1163
- }
1164
- this._$sounds.clear();
1165
- }
1166
- // draw
1167
- this._$draw();
1168
- // draw event
1169
- if (!$isTouch
1170
- && !this._$hitTestStart
1171
- && this._$state === "up"
1172
- && this._$stageX > -1
1173
- && this._$stageY > -1
1174
- && $getEvent()) {
1175
- this._$pointerCheck();
1176
- }
1177
- }
1178
- else {
1179
- if (this._$videos.length && !$rendererWorker) {
1180
- this._$draw();
1181
- }
1182
- }
1183
- // next frame
1184
- this._$timerId = $requestAnimationFrame((timestamp) => {
1185
- this._$run(timestamp);
1186
- });
1187
- }
1188
- /**
1189
- * @return {void}
1190
- * @method
1191
- * @private
1192
- */
1193
- _$pointerCheck() {
1194
- const stageX = this._$stageX;
1195
- const stageY = this._$stageY;
1196
- // setup
1197
- this._$hitObject.x = stageX;
1198
- this._$hitObject.y = stageY;
1199
- this._$hitObject.pointer = "";
1200
- this._$hitObject.hit = null;
1201
- // reset
1202
- $hitContext.setTransform(1, 0, 0, 1, 0, 0);
1203
- $hitContext.beginPath();
1204
- // hit test
1205
- $MATRIX_HIT_ARRAY_IDENTITY[4] = this._$tx / this._$scale / $devicePixelRatio;
1206
- $MATRIX_HIT_ARRAY_IDENTITY[5] = this._$ty / this._$scale / $devicePixelRatio;
1207
- this._$stage._$mouseHit($hitContext, $MATRIX_HIT_ARRAY_IDENTITY, this._$hitObject, true);
1208
- // change state
1209
- // params
1210
- let instance = null;
1211
- let target = null;
1212
- let canPointerText = false;
1213
- let canPointer = false;
1214
- // execute
1215
- if (this._$hitObject.hit) {
1216
- instance = this._$hitObject.hit;
1217
- // (1) mouseOut
1218
- if (this._$mouseOverTarget
1219
- && this._$mouseOverTarget !== instance) {
1220
- const outInstance = this._$mouseOverTarget;
1221
- if (outInstance.willTrigger(Next2DMouseEvent.MOUSE_OUT)) {
1222
- outInstance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_OUT, true, false));
1223
- }
1224
- }
1225
- // rollOut and rollOver
1226
- if (this._$rollOverObject !== instance) {
1227
- let hitParent = null;
1228
- if (this._$rollOverObject) {
1229
- // (2) prev object rollOut
1230
- target = this._$rollOverObject;
1231
- if (target.willTrigger(Next2DMouseEvent.ROLL_OUT)) {
1232
- target.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OUT, false, false));
1233
- }
1234
- // rollOver flag instance
1235
- hitParent = target._$parent;
1236
- while (hitParent && hitParent._$root !== hitParent) {
1237
- if (hitParent === instance) {
1238
- break;
1239
- }
1240
- if (hitParent._$mouseEnabled
1241
- && hitParent._$outCheck(stageX, stageY)) {
1242
- let isUpperLayer = false;
1243
- let check = instance;
1244
- while (check && check._$root !== check) {
1245
- if (check !== hitParent) {
1246
- check = check._$parent;
1247
- continue;
1248
- }
1249
- isUpperLayer = true;
1250
- break;
1251
- }
1252
- if (!isUpperLayer && hitParent._$parent === instance._$parent
1253
- && hitParent._$index > instance._$index) {
1254
- isUpperLayer = true;
1255
- }
1256
- if (isUpperLayer) {
1257
- break;
1258
- }
1259
- }
1260
- if (hitParent.willTrigger(Next2DMouseEvent.ROLL_OUT)) {
1261
- hitParent.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OUT, false, false));
1262
- }
1263
- hitParent = hitParent._$parent;
1264
- }
1265
- }
1266
- // (3) current object rollOver
1267
- target = instance;
1268
- for (;;) {
1269
- if (target.willTrigger(Next2DMouseEvent.ROLL_OVER)) {
1270
- target.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OVER, false, false));
1271
- }
1272
- target = target._$parent;
1273
- if (!target || target === hitParent
1274
- || target.stage === target) {
1275
- break;
1276
- }
1277
- }
1278
- }
1279
- this._$rollOverObject = instance;
1280
- // (4) mouseOver
1281
- switch (true) {
1282
- case this._$mouseOverTarget === null:
1283
- case this._$mouseOverTarget !== instance:
1284
- if (instance && instance.willTrigger(Next2DMouseEvent.MOUSE_OVER)) {
1285
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_OVER, true, false));
1286
- }
1287
- // set target
1288
- this._$mouseOverTarget = instance;
1289
- break;
1290
- }
1291
- // click reset
1292
- if (this._$state === "up") {
1293
- this._$clickTarget = null;
1294
- }
1295
- // PC
1296
- if (!$isTouch && this._$state === "up") {
1297
- target = instance;
1298
- while (target && target.root !== target) {
1299
- if ("_$text" in target) {
1300
- if (target.type === "input") {
1301
- canPointerText = true;
1302
- break;
1303
- }
1304
- }
1305
- if ("buttonMode" in target && target.buttonMode) {
1306
- canPointer = true;
1307
- break;
1308
- }
1309
- target = target._$parent;
1310
- }
1311
- }
1312
- }
1313
- else {
1314
- // (1) mouseOut
1315
- if (this._$mouseOverTarget) {
1316
- instance = this._$mouseOverTarget;
1317
- if (instance.willTrigger(Next2DMouseEvent.MOUSE_OUT)) {
1318
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_OUT, true, false));
1319
- }
1320
- }
1321
- // (2) rollOut
1322
- if (this._$rollOverObject) {
1323
- target = this._$rollOverObject;
1324
- // parent target
1325
- while (target && target.root !== target) {
1326
- if (target.willTrigger(Next2DMouseEvent.ROLL_OUT)) {
1327
- target.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OUT, false, false));
1328
- }
1329
- target = target._$parent;
1330
- }
1331
- }
1332
- // reset
1333
- this._$rollOverObject = null;
1334
- this._$mouseOverTarget = null;
1335
- }
1336
- // change cursor
1337
- switch (true) {
1338
- case canPointerText:
1339
- this._$canvas.style.cursor = "text";
1340
- break;
1341
- case canPointer:
1342
- this._$canvas.style.cursor = "pointer";
1343
- break;
1344
- case !$isTouch && this._$state === "up":
1345
- this._$canvas.style.cursor = "auto";
1346
- break;
1347
- }
1348
- if (this._$actions.length > 1) {
1349
- this._$doAction();
1350
- }
1351
- }
1352
- /**
1353
- * @return {void}
1354
- * @method
1355
- * @private
1356
- */
1357
- _$action() {
1358
- if (this._$stopFlag) {
1359
- return;
1360
- }
1361
- let loaders = null;
1362
- const length = this._$loaders.length;
1363
- if (length) {
1364
- // clone
1365
- loaders = this._$loaders.slice(0);
1366
- // array reset
1367
- this._$loaders.length = 0;
1368
- for (let idx = 0; idx < length; ++idx) {
1369
- const loader = loaders[idx];
1370
- // first action
1371
- if ("content" in loader) {
1372
- loader.content._$prepareActions();
1373
- }
1374
- }
1375
- }
1376
- // next frame
1377
- this._$stage._$nextFrame();
1378
- // enter frame event
1379
- if (this._$broadcastEvents.has(Next2DEvent.ENTER_FRAME)) {
1380
- this._$dispatchEvent(new Next2DEvent(Next2DEvent.ENTER_FRAME));
1381
- }
1382
- // constructed event
1383
- if (this._$broadcastEvents.has(Next2DEvent.FRAME_CONSTRUCTED)) {
1384
- this._$dispatchEvent(new Next2DEvent(Next2DEvent.FRAME_CONSTRUCTED));
1385
- }
1386
- // execute frame action
1387
- this._$doAction();
1388
- // exit event
1389
- if (this._$broadcastEvents.has(Next2DEvent.EXIT_FRAME)) {
1390
- this._$dispatchEvent(new Next2DEvent(Next2DEvent.EXIT_FRAME));
1391
- }
1392
- // render event
1393
- if (this._$stage._$invalidate) {
1394
- // reset
1395
- this._$stage._$invalidate = false;
1396
- // execute render event
1397
- this._$dispatchEvent(new Next2DEvent(Next2DEvent.RENDER));
1398
- }
1399
- // loader events
1400
- if (loaders) {
1401
- for (let idx = 0; idx < loaders.length; ++idx) {
1402
- const loader = loaders[idx];
1403
- // init event
1404
- if (loader.hasEventListener(Next2DEvent.INIT)) {
1405
- loader.dispatchEvent(new Next2DEvent(Next2DEvent.INIT));
1406
- }
1407
- // complete event
1408
- if (loader.hasEventListener(Next2DEvent.COMPLETE)) {
1409
- loader.dispatchEvent(new Next2DEvent(Next2DEvent.COMPLETE));
1410
- }
1411
- }
1412
- // pool
1413
- $poolArray(loaders);
1414
- }
1415
- // execute frame action
1416
- this._$doAction();
1417
- }
1418
- /**
1419
- * @returns void
1420
- * @private
1421
- */
1422
- _$draw() {
1423
- if (!this._$width || !this._$height) {
1424
- return;
1425
- }
1426
- if (!this._$stage._$isUpdated()) {
1427
- return;
1428
- }
1429
- if ($rendererWorker) {
1430
- $rendererWorker.postMessage({
1431
- "command": "draw"
1432
- });
1433
- }
1434
- const context = this._$context;
1435
- if (!context) {
1436
- return;
1437
- }
1438
- // reset
1439
- context.reset();
1440
- context.setTransform(1, 0, 0, 1, 0, 0);
1441
- context.clearRect(0, 0, this._$width, this._$height);
1442
- context.beginPath();
1443
- this._$stage._$draw(context, this._$matrix, $COLOR_ARRAY_IDENTITY);
1444
- // stage end
1445
- this._$stage._$updated = false;
1446
- context.drawInstacedArray();
1447
- context
1448
- .frameBuffer
1449
- .transferToMainTexture();
1450
- }
1451
- /**
1452
- * @return {void}
1453
- * @method
1454
- * @private
1455
- */
1456
- _$doAction() {
1457
- while (this._$actions.length) {
1458
- this._$actionProcess = true;
1459
- // target object
1460
- const mc = this._$actions.pop();
1461
- if (!mc) {
1462
- continue;
1463
- }
1464
- mc._$canAction = false;
1465
- mc._$actionOffset = 0;
1466
- mc._$actionLimit = 0;
1467
- const frame = mc._$currentFrame;
1468
- if (!mc._$actions.has(frame)) {
1469
- continue;
1470
- }
1471
- const actions = mc._$actions.get(frame);
1472
- if (!actions) {
1473
- continue;
1474
- }
1475
- mc._$actionProcess = true;
1476
- for (let idx = 0; idx < actions.length; ++idx) {
1477
- $setCurrentLoaderInfo(mc._$loaderInfo);
1478
- actions[idx].apply(mc);
1479
- }
1480
- mc._$actionProcess = false;
1481
- // adjustment
1482
- if (mc._$frameCache.size) {
1483
- mc._$currentFrame = mc._$frameCache.get("nextFrame");
1484
- mc._$clearChildren();
1485
- mc._$stopFlag = mc._$frameCache.get("stopFlag");
1486
- mc._$isPlaying = mc._$frameCache.get("isPlaying");
1487
- mc._$frameCache.clear();
1488
- }
1489
- }
1490
- this._$actionProcess = false;
1491
- $setCurrentLoaderInfo(null);
1492
- }
1493
- /**
1494
- * @return {void}
1495
- * @method
1496
- * @private
1497
- */
1498
- _$hitTest() {
1499
- if (this._$stopFlag) {
1500
- return;
1501
- }
1502
- // setup
1503
- const event = $getEvent();
1504
- if (!event) {
1505
- return;
1506
- }
1507
- // update flags
1508
- this._$hitTestStart = true;
1509
- $doUpdated(false);
1510
- // params
1511
- let instance = null;
1512
- let target = null;
1513
- let x = $window.scrollX;
1514
- let y = $window.scrollY;
1515
- const div = $document
1516
- .getElementById(this.contentElementId);
1517
- if (div) {
1518
- const rect = div.getBoundingClientRect();
1519
- x += rect.left;
1520
- y += rect.top;
1521
- }
1522
- let pageX = 0;
1523
- let pageY = 0;
1524
- if ("changedTouches" in event) {
1525
- const changedTouche = event.changedTouches[0];
1526
- pageX = changedTouche.pageX;
1527
- pageY = changedTouche.pageY;
1528
- }
1529
- else if ("pageX" in event) {
1530
- pageX = event.pageX;
1531
- pageY = event.pageY;
1532
- }
1533
- // drop point
1534
- const stageX = (pageX - x) / this._$scale;
1535
- const stageY = (pageY - y) / this._$scale;
1536
- // update
1537
- this._$stageX = stageX;
1538
- this._$stageY = stageY;
1539
- // setup
1540
- this._$hitObject.x = stageX;
1541
- this._$hitObject.y = stageY;
1542
- this._$hitObject.pointer = "";
1543
- this._$hitObject.hit = null;
1544
- // reset
1545
- $hitContext.setTransform(1, 0, 0, 1, 0, 0);
1546
- $hitContext.beginPath();
1547
- // hit test
1548
- $MATRIX_HIT_ARRAY_IDENTITY[4] = this._$tx / this._$scale / $devicePixelRatio;
1549
- $MATRIX_HIT_ARRAY_IDENTITY[5] = this._$ty / this._$scale / $devicePixelRatio;
1550
- this._$stage._$mouseHit($hitContext, $MATRIX_HIT_ARRAY_IDENTITY, this._$hitObject, true);
1551
- // stop event
1552
- if (this._$hitObject.hit) {
1553
- event.preventDefault();
1554
- }
1555
- // change state
1556
- let canPointerText = false;
1557
- let staticPointer = false;
1558
- let canPointer = false;
1559
- const eventType = $getEventType();
1560
- switch (eventType) {
1561
- case $TOUCH_MOVE:
1562
- case $MOUSE_MOVE:
1563
- if ($dropTarget) {
1564
- const point = $dropTarget._$dragMousePoint();
1565
- let dragX = point.x;
1566
- let dragY = point.y;
1567
- if (!$dragRules.lock) {
1568
- dragX += $dragRules.position.x;
1569
- dragY += $dragRules.position.y;
1570
- }
1571
- const bounds = $dragRules.bounds;
1572
- if (bounds) {
1573
- dragX = $clamp(dragX, bounds.left, bounds.right);
1574
- dragY = $clamp(dragY, bounds.top, bounds.bottom);
1575
- }
1576
- // set move xy
1577
- $dropTarget.x = dragX;
1578
- $dropTarget.y = dragY;
1579
- }
1580
- if (this._$clickTarget
1581
- && "_$text" in this._$clickTarget
1582
- && this._$clickTarget.scrollEnabled
1583
- && this._$clickTarget.selectIndex === -1) {
1584
- const deltaX = this._$deltaX - pageX;
1585
- const deltaY = this._$deltaY - pageY;
1586
- // @ts-ignore
1587
- this._$clickTarget.scrollX += deltaX / (this._$clickTarget.textWidth / this._$clickTarget.width);
1588
- // @ts-ignore
1589
- this._$clickTarget.scrollY += deltaY / (this._$clickTarget.textHeight / this._$clickTarget.height);
1590
- }
1591
- this._$deltaX = pageX;
1592
- this._$deltaY = pageY;
1593
- break;
1594
- case $TOUCH_START:
1595
- case $MOUSE_DOWN:
1596
- this._$deltaX = pageX;
1597
- this._$deltaY = pageY;
1598
- this._$state = "down";
1599
- canPointer = this._$canvas.style.cursor === "pointer";
1600
- staticPointer = true;
1601
- break;
1602
- case $TOUCH_END:
1603
- case $MOUSE_UP:
1604
- case $DOUBLE_CLICK:
1605
- this._$deltaX = 0;
1606
- this._$deltaY = 0;
1607
- this._$state = "up";
1608
- break;
1609
- }
1610
- // execute
1611
- switch (true) {
1612
- case this._$hitObject.hit === null:
1613
- case eventType === $MOUSE_LEAVE:
1614
- // (1) mouseOut
1615
- if (this._$mouseOverTarget) {
1616
- instance = this._$mouseOverTarget;
1617
- if (instance.willTrigger(Next2DMouseEvent.MOUSE_OUT)) {
1618
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_OUT, true, false));
1619
- }
1620
- }
1621
- // (2) rollOut
1622
- if (this._$rollOverObject) {
1623
- target = this._$rollOverObject;
1624
- // parent target
1625
- while (target && target.root !== target) {
1626
- if (target.willTrigger(Next2DMouseEvent.ROLL_OUT)) {
1627
- target.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OUT, false, false));
1628
- }
1629
- target = target._$parent;
1630
- }
1631
- }
1632
- // reset
1633
- this._$rollOverObject = null;
1634
- this._$mouseOverTarget = null;
1635
- // stage event
1636
- switch (eventType) {
1637
- case $MOUSE_WHEEL:
1638
- if (this._$stage.hasEventListener(Next2DMouseEvent.MOUSE_WHEEL)) {
1639
- this._$stage.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_WHEEL, true, false));
1640
- }
1641
- break;
1642
- case $TOUCH_START:
1643
- case $MOUSE_DOWN:
1644
- if (this._$textField && "focus" in this._$textField) {
1645
- this._$textField.focus = false;
1646
- this._$textField = null;
1647
- }
1648
- if (this._$stage.hasEventListener(Next2DMouseEvent.MOUSE_DOWN)) {
1649
- this._$stage.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_DOWN, true, false));
1650
- }
1651
- break;
1652
- case $TOUCH_END:
1653
- case $MOUSE_UP:
1654
- if (this._$stage.hasEventListener(Next2DMouseEvent.CLICK)) {
1655
- this._$stage.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.CLICK, true, false));
1656
- }
1657
- if (this._$stage.hasEventListener(Next2DMouseEvent.MOUSE_UP)) {
1658
- this._$stage.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_UP, true, false));
1659
- }
1660
- break;
1661
- case $TOUCH_MOVE:
1662
- case $MOUSE_MOVE:
1663
- if (this._$stage.hasEventListener(Next2DMouseEvent.MOUSE_MOVE)) {
1664
- this._$stage.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_MOVE, true, false));
1665
- }
1666
- break;
1667
- case $DOUBLE_CLICK:
1668
- if (this._$stage.hasEventListener(Next2DMouseEvent.DOUBLE_CLICK)) {
1669
- this._$stage.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.DOUBLE_CLICK, true, false));
1670
- }
1671
- break;
1672
- }
1673
- break;
1674
- default:
1675
- instance = this._$hitObject.hit;
1676
- switch (eventType) {
1677
- // move event
1678
- case $TOUCH_MOVE:
1679
- case $MOUSE_MOVE:
1680
- // (1) mouseMove
1681
- if (instance.willTrigger(Next2DMouseEvent.MOUSE_MOVE)) {
1682
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_MOVE, true, false));
1683
- }
1684
- // (2) mouseOut
1685
- if (this._$mouseOverTarget
1686
- && this._$mouseOverTarget !== instance) {
1687
- const outInstance = this._$mouseOverTarget;
1688
- if (outInstance.willTrigger(Next2DMouseEvent.MOUSE_OUT)) {
1689
- outInstance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_OUT, true, false));
1690
- }
1691
- }
1692
- // rollOut and rollOver
1693
- if (this._$rollOverObject !== instance) {
1694
- let hitParent = null;
1695
- if (this._$rollOverObject) {
1696
- // (3) prev object rollOut
1697
- target = this._$rollOverObject;
1698
- if (target.willTrigger(Next2DMouseEvent.ROLL_OUT)) {
1699
- target.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OUT, false, false));
1700
- }
1701
- // rollOver flag instance
1702
- hitParent = target._$parent;
1703
- while (hitParent && hitParent._$root !== hitParent) {
1704
- if (hitParent === instance) {
1705
- break;
1706
- }
1707
- if (hitParent._$mouseEnabled
1708
- && hitParent._$outCheck(stageX, stageY)) {
1709
- let isUpperLayer = false;
1710
- let check = instance;
1711
- while (check && check._$root !== check) {
1712
- if (check !== hitParent) {
1713
- check = check._$parent;
1714
- continue;
1715
- }
1716
- isUpperLayer = true;
1717
- break;
1718
- }
1719
- if (!isUpperLayer && hitParent._$parent === instance._$parent
1720
- && hitParent._$index > instance._$index) {
1721
- isUpperLayer = true;
1722
- }
1723
- if (isUpperLayer) {
1724
- break;
1725
- }
1726
- }
1727
- if (hitParent.willTrigger(Next2DMouseEvent.ROLL_OUT)) {
1728
- hitParent.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OUT, false, false));
1729
- }
1730
- hitParent = hitParent._$parent;
1731
- }
1732
- }
1733
- // (4) current object rollOver
1734
- target = instance;
1735
- for (;;) {
1736
- if (target.willTrigger(Next2DMouseEvent.ROLL_OVER)) {
1737
- target.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.ROLL_OVER, false, false));
1738
- }
1739
- target = target._$parent;
1740
- if (!target || target === hitParent
1741
- || target.stage === target) {
1742
- break;
1743
- }
1744
- }
1745
- }
1746
- this._$rollOverObject = instance;
1747
- // (5) mouseOver
1748
- switch (true) {
1749
- case this._$mouseOverTarget === null:
1750
- case this._$mouseOverTarget !== instance:
1751
- if (instance.willTrigger(Next2DMouseEvent.MOUSE_OVER)) {
1752
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_OVER, true, false));
1753
- }
1754
- // set target
1755
- this._$mouseOverTarget = instance;
1756
- break;
1757
- }
1758
- // click reset
1759
- if (this._$state === "up") {
1760
- this._$clickTarget = null;
1761
- }
1762
- else {
1763
- if (this._$textField) {
1764
- this._$textField._$setIndex(stageX - $MATRIX_HIT_ARRAY_IDENTITY[4], stageY - $MATRIX_HIT_ARRAY_IDENTITY[5]);
1765
- }
1766
- }
1767
- break;
1768
- // down event
1769
- case $TOUCH_START:
1770
- case $MOUSE_DOWN:
1771
- if (this._$textField
1772
- && instance !== this._$textField) {
1773
- this._$textField.focus = false;
1774
- this._$textField = null;
1775
- }
1776
- // TextField focus out
1777
- if ("_$text" in instance) {
1778
- instance.focus = true;
1779
- instance._$setIndex(stageX - $MATRIX_HIT_ARRAY_IDENTITY[4], stageY - $MATRIX_HIT_ARRAY_IDENTITY[5]);
1780
- this._$textField = instance;
1781
- // move text area element
1782
- $textArea.style.left = `${pageX}px`;
1783
- $textArea.style.top = `${pageY}px`;
1784
- }
1785
- // (3) mouseDown
1786
- if (instance.willTrigger(Next2DMouseEvent.MOUSE_DOWN)) {
1787
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_DOWN, true, false));
1788
- }
1789
- // (4) click
1790
- this._$clickTarget = instance;
1791
- break;
1792
- // up event
1793
- case $TOUCH_END:
1794
- case $MOUSE_UP:
1795
- // (1) mouseUp
1796
- if (instance.willTrigger(Next2DMouseEvent.MOUSE_UP)) {
1797
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_UP, true, false));
1798
- }
1799
- // (2) click
1800
- if (this._$clickTarget === instance) {
1801
- if (instance.willTrigger(Next2DMouseEvent.CLICK)) {
1802
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.CLICK, true, false));
1803
- }
1804
- }
1805
- // reset
1806
- this._$clickTarget = null;
1807
- break;
1808
- case $MOUSE_WHEEL:
1809
- if (instance.willTrigger(Next2DMouseEvent.MOUSE_WHEEL)) {
1810
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.MOUSE_WHEEL));
1811
- }
1812
- if (instance.scrollEnabled) {
1813
- if ("deltaX" in event) {
1814
- // @ts-ignore
1815
- instance.scrollX += event.deltaX / (instance.textWidth / instance.width);
1816
- }
1817
- if ("deltaY" in event) {
1818
- // @ts-ignore
1819
- instance.scrollY += event.deltaY / (instance.textHeight / instance.height);
1820
- }
1821
- }
1822
- break;
1823
- case $DOUBLE_CLICK:
1824
- if (instance.willTrigger(Next2DMouseEvent.DOUBLE_CLICK)) {
1825
- instance.dispatchEvent(new Next2DMouseEvent(Next2DMouseEvent.DOUBLE_CLICK));
1826
- }
1827
- break;
1828
- default:
1829
- break;
1830
- }
1831
- // PC
1832
- if (!staticPointer) {
1833
- if (!$isTouch && this._$state === "up") {
1834
- target = instance;
1835
- while (target && target.root !== target) {
1836
- if ("_$text" in target) {
1837
- if (target.type === "input") {
1838
- canPointerText = true;
1839
- break;
1840
- }
1841
- }
1842
- else {
1843
- if (target._$buttonMode) {
1844
- canPointer = true;
1845
- break;
1846
- }
1847
- }
1848
- target = target._$parent;
1849
- }
1850
- }
1851
- }
1852
- break;
1853
- }
1854
- // change cursor
1855
- switch (true) {
1856
- case canPointerText:
1857
- this._$canvas.style.cursor = "text";
1858
- break;
1859
- case canPointer:
1860
- this._$canvas.style.cursor = "pointer";
1861
- break;
1862
- case !$isTouch && this._$state === "up":
1863
- this._$canvas.style.cursor = "auto";
1864
- break;
1865
- }
1866
- // execute action
1867
- if (!this._$actionProcess && this._$actions.length > 1) {
1868
- this._$doAction();
1869
- }
1870
- if ($isUpdated()) {
1871
- // action script
1872
- this._$stage._$prepareActions();
1873
- if (!this._$actionProcess) {
1874
- this._$doAction();
1875
- }
1876
- }
1877
- this._$hitTestStart = false;
1878
- }
1879
- }