@shijiu/jsview 1.9.730 → 1.9.747

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 (116) hide show
  1. package/dom/jsv-browser-debug-dom.js +1 -1
  2. package/dom/jsv-dom.js +1 -1
  3. package/dom/jsv-engine-js-browser.js +1 -1
  4. package/dom/jsv-forge-define.js +1 -1
  5. package/package.json +14 -17
  6. package/patches/node_modules/vite/dist/node/chunks/dep-0fc8e132.js +8 -1
  7. package/patches/node_modules/vite/dist/node/jsview.vite.config.js +12 -6
  8. package/dom/jsview-dom/README.md +0 -5
  9. package/dom/jsview-dom/package-lock.json-perfect +0 -3898
  10. package/dom/jsview-dom/package.json +0 -23
  11. package/dom/jsview-dom/rollup/browser-debug-dom.rollup.config.js +0 -15
  12. package/dom/jsview-dom/rollup/dom.rollup.config.js +0 -14
  13. package/dom/jsview-dom/rollup/engine-js-browser.rollup.config.js +0 -14
  14. package/dom/jsview-dom/rollup/forge-define.rollup.config.js +0 -14
  15. package/dom/jsview-dom/scripts/release_dist.sh +0 -36
  16. package/dom/jsview-dom/src/dom-browser-hook/HookDocument.js +0 -118
  17. package/dom/jsview-dom/src/dom-browser-hook/OriginDocument.js +0 -19
  18. package/dom/jsview-dom/src/dom-browser-hook/StyleFormatCheck.js +0 -559
  19. package/dom/jsview-dom/src/dom-browser-hook/index.js +0 -6
  20. package/dom/jsview-dom/src/dom-wrapper/ForgeExtension.js +0 -226
  21. package/dom/jsview-dom/src/dom-wrapper/JsViewForgeApp.js +0 -85
  22. package/dom/jsview-dom/src/dom-wrapper/JsViewProxy.js +0 -51
  23. package/dom/jsview-dom/src/dom-wrapper/event/AnimationEvent.js +0 -7
  24. package/dom/jsview-dom/src/dom-wrapper/event/Event.js +0 -12
  25. package/dom/jsview-dom/src/dom-wrapper/event/FocusEvent.js +0 -9
  26. package/dom/jsview-dom/src/dom-wrapper/event/KeyboardEvent.js +0 -43
  27. package/dom/jsview-dom/src/dom-wrapper/event/LoadEvent.js +0 -8
  28. package/dom/jsview-dom/src/dom-wrapper/index.js +0 -16
  29. package/dom/jsview-dom/src/dom-wrapper/node/AnchorElement.js +0 -24
  30. package/dom/jsview-dom/src/dom-wrapper/node/AudioElement.js +0 -60
  31. package/dom/jsview-dom/src/dom-wrapper/node/Comment.js +0 -10
  32. package/dom/jsview-dom/src/dom-wrapper/node/DivElement.js +0 -498
  33. package/dom/jsview-dom/src/dom-wrapper/node/Document.js +0 -274
  34. package/dom/jsview-dom/src/dom-wrapper/node/Element.js +0 -852
  35. package/dom/jsview-dom/src/dom-wrapper/node/FDivElement.js +0 -48
  36. package/dom/jsview-dom/src/dom-wrapper/node/HeadElement.js +0 -47
  37. package/dom/jsview-dom/src/dom-wrapper/node/ImageElement.js +0 -203
  38. package/dom/jsview-dom/src/dom-wrapper/node/JsvAudioTrackElement.js +0 -22
  39. package/dom/jsview-dom/src/dom-wrapper/node/JsvElement.js +0 -40
  40. package/dom/jsview-dom/src/dom-wrapper/node/LinkElement.js +0 -48
  41. package/dom/jsview-dom/src/dom-wrapper/node/MediaElement.js +0 -230
  42. package/dom/jsview-dom/src/dom-wrapper/node/Node.js +0 -178
  43. package/dom/jsview-dom/src/dom-wrapper/node/SVGElement.js +0 -9
  44. package/dom/jsview-dom/src/dom-wrapper/node/ScriptElement.js +0 -45
  45. package/dom/jsview-dom/src/dom-wrapper/node/StyleElement.js +0 -33
  46. package/dom/jsview-dom/src/dom-wrapper/node/StyleElementCache.js +0 -41
  47. package/dom/jsview-dom/src/dom-wrapper/node/Text.js +0 -22
  48. package/dom/jsview-dom/src/dom-wrapper/node/UnknownElement.js +0 -4
  49. package/dom/jsview-dom/src/dom-wrapper/node/VideoElement.js +0 -237
  50. package/dom/jsview-dom/src/dom-wrapper/style/BorderImage.js +0 -25
  51. package/dom/jsview-dom/src/dom-wrapper/style/Inset.js +0 -26
  52. package/dom/jsview-dom/src/dom-wrapper/style/JsvStyleVariable.js +0 -65
  53. package/dom/jsview-dom/src/dom-wrapper/style/KeyframeRule.js +0 -11
  54. package/dom/jsview-dom/src/dom-wrapper/style/StyleDeclaration.js +0 -609
  55. package/dom/jsview-dom/src/dom-wrapper/style/StyleSheet.js +0 -51
  56. package/dom/jsview-dom/src/dom-wrapper/style/StyleValue.js +0 -385
  57. package/dom/jsview-dom/src/dom-wrapper/style/TextStylePackMap.js +0 -43
  58. package/dom/jsview-dom/src/dom-wrapper/style/URL.js +0 -144
  59. package/dom/jsview-dom/src/dom-wrapper/utils/EventHandler.js +0 -42
  60. package/dom/jsview-dom/src/dom-wrapper/utils/FDivRoot.js +0 -86
  61. package/dom/jsview-dom/src/dom-wrapper/utils/JsvLazySyncCache.js +0 -64
  62. package/dom/jsview-dom/src/dom-wrapper/utils/Log.js +0 -42
  63. package/dom/jsview-dom/src/dom-wrapper/utils/MutationObserver.js +0 -32
  64. package/dom/jsview-dom/src/dom-wrapper/utils/focusableNode.js +0 -715
  65. package/dom/jsview-dom/src/engine-js/ForgeDefine.js +0 -8
  66. package/dom/jsview-dom/src/engine-js/ForgeExtensionDefine.js +0 -14
  67. package/dom/jsview-dom/src/engine-js/browser/PlatformUtils.js +0 -100
  68. package/dom/jsview-dom/src/engine-js/browser/animation_base.js +0 -313
  69. package/dom/jsview-dom/src/engine-js/browser/animation_keyframe.js +0 -64
  70. package/dom/jsview-dom/src/engine-js/browser/animation_progress.js +0 -287
  71. package/dom/jsview-dom/src/engine-js/browser/animation_proxy.js +0 -906
  72. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/demux.js +0 -143
  73. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/gifDecoder.js +0 -12
  74. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/libwebp-0.6.0.min.js +0 -160
  75. package/dom/jsview-dom/src/engine-js/browser/console_log.js +0 -25
  76. package/dom/jsview-dom/src/engine-js/browser/dynamic_key_frames.js +0 -95
  77. package/dom/jsview-dom/src/engine-js/browser/easing.js +0 -114
  78. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/element_transform.js +0 -122
  79. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/gjk.js +0 -450
  80. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/mat.js +0 -102
  81. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/range_model.js +0 -296
  82. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/test_collide.js +0 -10
  83. package/dom/jsview-dom/src/engine-js/browser/index.js +0 -38
  84. package/dom/jsview-dom/src/engine-js/browser/latex_parse.js +0 -336
  85. package/dom/jsview-dom/src/engine-js/browser/layout_params.js +0 -113
  86. package/dom/jsview-dom/src/engine-js/browser/layout_view.js +0 -3545
  87. package/dom/jsview-dom/src/engine-js/browser/layout_view_debug.js +0 -15
  88. package/dom/jsview-dom/src/engine-js/browser/media.js +0 -379
  89. package/dom/jsview-dom/src/engine-js/browser/page_base.js +0 -941
  90. package/dom/jsview-dom/src/engine-js/browser/particle_view.js +0 -526
  91. package/dom/jsview-dom/src/engine-js/browser/platform_timer.js +0 -61
  92. package/dom/jsview-dom/src/engine-js/browser/react_utils.js +0 -5
  93. package/dom/jsview-dom/src/engine-js/browser/rect_utils.js +0 -91
  94. package/dom/jsview-dom/src/engine-js/browser/render_bridge.js +0 -128
  95. package/dom/jsview-dom/src/engine-js/browser/render_texture_proxy.js +0 -155
  96. package/dom/jsview-dom/src/engine-js/browser/renderer_deprecated.js +0 -75
  97. package/dom/jsview-dom/src/engine-js/browser/sound_pool.js +0 -139
  98. package/dom/jsview-dom/src/engine-js/browser/steps_animation.js +0 -192
  99. package/dom/jsview-dom/src/engine-js/browser/text_style_cache.js +0 -454
  100. package/dom/jsview-dom/src/engine-js/browser/text_utils.js +0 -299
  101. package/dom/jsview-dom/src/engine-js/browser/text_view.js +0 -428
  102. package/dom/jsview-dom/src/engine-js/browser/texture_manager.js +0 -1060
  103. package/dom/jsview-dom/src/engine-js/browser/url.js +0 -69
  104. package/dom/jsview-dom/src/engine-js/browser/velocity.js +0 -40
  105. package/dom/jsview-dom/src/engine-js/browser/view_sensor/autofroze_sensor.js +0 -77
  106. package/dom/jsview-dom/src/engine-js/browser/view_sensor/drag_impact_sensor.js +0 -67
  107. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor.js +0 -98
  108. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_callback.js +0 -21
  109. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_manager.js +0 -24
  110. package/dom/jsview-dom/src/engine-js/browser/view_sensor/index.js +0 -9
  111. package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor.js +0 -268
  112. package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor_manager.js +0 -84
  113. package/dom/jsview-dom/src/engine-js/browser/view_sensor/visible_sensor.js +0 -213
  114. package/dom/jsview-dom/src/engine-js/browser/view_store.js +0 -41
  115. package/dom/jsview-dom/src/engine-js/index.js +0 -2
  116. package/dom/jsview-dom/src/engine-js/native/README.md +0 -1
@@ -1,128 +0,0 @@
1
- /* eslint-disable no-unused-vars */
2
- import Forge from "../ForgeDefine";
3
-
4
- class RenderBridge {
5
- constructor() {
6
- this._ScreenInfo = {
7
- width: 160,
8
- height: 90,
9
- x: 2 / 160,
10
- y: 2 / 90,
11
- perspective: 2 / 160,
12
- scaleRatio: 1.0 /* display scale ratio */,
13
- designedWidth: 1280 /* designed map width */
14
- };
15
-
16
- this._FrameLoopFunc = null;
17
- this._CallbacksPerFrame = new Set();
18
-
19
- this._WillSwapCallbacks = new Map();
20
- this._DoWillSwapCallback = this._OnWillSwap.bind(this); // 提前声明WillSwapCallback函数对象,提高调用速度
21
- }
22
-
23
- BeginHtmlFrameLoop() {
24
- if (this._FrameLoopFunc !== null) {
25
- // Already started
26
- return;
27
- }
28
-
29
- if (window.requestAnimationFrame) {
30
- this._FrameLoopFunc = this._OnAnimation.bind(this);
31
- window.requestAnimationFrame(this._FrameLoopFunc);
32
- }
33
- }
34
-
35
- _OnAnimation() {
36
- let keep_loop = false;
37
-
38
- // 碰撞检测
39
- if (Forge.sViewSensorManager.HtmlHasActiveSensor()) {
40
- Forge.sViewSensorManager.HtmlDoWorkOnFrame();
41
-
42
- // Check if need continue frame loop
43
- if (Forge.sViewSensorManager.HtmlHasActiveSensor()) {
44
- keep_loop = true;
45
- }
46
- }
47
-
48
- // 进度Repeat检测
49
- if (this._CallbacksPerFrame.size > 0) {
50
- for (const callback of this._CallbacksPerFrame) {
51
- callback();
52
- }
53
- // 再次检测,因为可能在callback中触发了队列个数变化
54
- if (this._CallbacksPerFrame.size > 0) {
55
- keep_loop = true;
56
- }
57
- }
58
-
59
- if (keep_loop) {
60
- window.requestAnimationFrame(this._FrameLoopFunc);
61
- } else {
62
- this._FrameLoopFunc = null;
63
- }
64
- }
65
-
66
- GetScreenInfo() {
67
- return this._ScreenInfo;
68
- }
69
-
70
- InitScreenBuffer(display_scale_ratio, designed_map_width) {
71
- if (isNaN(display_scale_ratio)) {
72
- display_scale_ratio = 1.0;
73
- }
74
- if (isNaN(designed_map_width)) {
75
- designed_map_width = 1280;
76
- }
77
- const buffer_width = designed_map_width * display_scale_ratio;
78
- const buffer_height = buffer_width / 16 * 9;
79
- this._ScreenInfo.width = Math.floor(buffer_width);
80
- this._ScreenInfo.height = Math.floor(buffer_height);
81
- this._ScreenInfo.x = 2.0 / this._ScreenInfo.width;
82
- this._ScreenInfo.y = 2.0 / this._ScreenInfo.height;
83
- this._ScreenInfo.perspective = this._ScreenInfo.x;
84
- this._ScreenInfo.scaleRatio = display_scale_ratio;
85
- this._ScreenInfo.designedWidth = designed_map_width;
86
- }
87
-
88
- RequestSwap() {
89
- if (!this._OnRequesting) {
90
- this._OnRequesting = true;
91
- Promise.resolve().then(this._DoRequestSwap.bind(this));
92
- }
93
- }
94
-
95
- SetGlobalConfig(json) {}
96
-
97
- AddWillSwapListener(alias, callback) {
98
- this._WillSwapCallbacks.set(alias, callback);
99
- }
100
-
101
- _DoRequestSwap() {
102
- if (this._WillSwapCallbacks.size > 0) {
103
- this._WillSwapCallbacks.forEach(this._DoWillSwapCallback);
104
- }
105
- this._OnRequesting = false;
106
- }
107
-
108
- InstantPerformSwap() {
109
- if (this._OnRequesting) {
110
- this._OnRequesting = false;
111
- this._DoRequestSwap(false);
112
- }
113
- }
114
-
115
- _OnWillSwap(callback) {
116
- callback();
117
- }
118
-
119
- RegisterPerFrameCallback(callback) {
120
- this._CallbacksPerFrame.add(callback);
121
- }
122
-
123
- UnregisterPerFrameCallback(callback) {
124
- this._CallbacksPerFrame.delete(callback);
125
- }
126
- }
127
- Forge.RenderBridge = RenderBridge;
128
- Forge.sRenderBridge = new Forge.RenderBridge();
@@ -1,155 +0,0 @@
1
- /* eslint-disable no-unused-vars */
2
- /* eslint-disable no-prototype-builtins */
3
- import Forge from "../ForgeDefine";
4
-
5
- class RenderTextureDelegateManager {
6
- constructor() {
7
- this._IdTokenGenerator = 66;
8
- Forge.sRenderTextureDelegateManager = this;
9
- this._CheckExpiredTime = 0;
10
- }
11
-
12
- CreateTextureHeadStatus() {
13
- const texture = new Forge.RenderTextureDelegate(this, 0);
14
- texture.DoRef();
15
- return texture;
16
- }
17
-
18
- CreateTextureStatus() {
19
- const texture = new Forge.RenderTextureDelegate(this, 0);
20
- texture.DoRef();
21
- return texture;
22
- }
23
-
24
- CreateTexture() {
25
- const texture = new Forge.RenderTextureDelegate(
26
- this,
27
- this._IdTokenGenerator++
28
- );
29
- texture.DoRef();
30
- return texture;
31
- }
32
-
33
- RecycleTexture(texture) {}
34
-
35
- CreateResourceInfo(tm_id, func_name) {
36
- const resource_info = {
37
- Id: 0,
38
- Nam: func_name,
39
- Set: null, // 内容由各自Resource创建方式自定义填充
40
- TmId: tm_id, // TextureManager ID,
41
- NdLd: 0, // need loaded 0:false, 1:true
42
- };
43
-
44
- return resource_info;
45
- }
46
-
47
- AppendFontStatusIfNeed(settings, string_with_font) {
48
- const settings_font_status = {};
49
- settings_font_status.Fo = string_with_font.font;
50
- settings_font_status.Si = string_with_font.size;
51
- settings_font_status.It = string_with_font.italic;
52
- settings_font_status.Bo = string_with_font.bold;
53
- settings_font_status.Al = string_with_font.alignment;
54
- settings_font_status.Ve = string_with_font.vertical_align;
55
- settings_font_status.Vaa = string_with_font.vertical_area_align;
56
- settings_font_status.Tx = string_with_font.textColour;
57
- settings_font_status.Ba = string_with_font.backgroundColour;
58
- settings_font_status.En = string_with_font.enableBlend;
59
- settings_font_status.Sh = string_with_font.shadow;
60
- if (string_with_font.stroke_width) {
61
- settings_font_status.Stk = string_with_font.stroke_width;
62
- } else {
63
- settings_font_status.Stk = -1;
64
- }
65
- settings.FO = JSON.stringify(settings_font_status);
66
- }
67
- }
68
- Forge.RenderTextureDelegateManager = RenderTextureDelegateManager;
69
- Forge.sRenderTextureDelegateManager = new Forge.RenderTextureDelegateManager();
70
-
71
- class RenderTextureDelegate {
72
- constructor(manager, assigned_id_token) {
73
- this.IdToken = assigned_id_token;
74
- this._Manager = manager;
75
- this._Reference = 0;
76
- this._SyncingResourceInfo = null;
77
-
78
- this._OnloadCallbacks = {};
79
- this._OnloadCallbacksSize = 0;
80
- this._OnloadCallbackIdGenerator = 1;
81
-
82
- // 以下属性只针对有网络请求的Texture有效(例如通过URL获取图片资源的情况)
83
- this.Unloaded = true;
84
- this.LoadTime = 0;
85
- this.RequireTime = 0;
86
- this.ForceExpire = false;
87
- this.NeedCheckExpired = false;
88
-
89
- const enable_trace = Forge.ForgeDebug.GetTextureTracer();
90
- if (enable_trace) {
91
- const error_for_stack = new Error();
92
- this.Stack = error_for_stack.stack;
93
- }
94
- }
95
-
96
- DoRef() {
97
- this._Reference++;
98
- }
99
-
100
- UndoRef() {
101
- this._Reference--;
102
- if (this._Reference === 0) {
103
- // Recycle callbacks
104
- if (this._OnloadCallbacksSize > 0) {
105
- this._OnloadCallbacks = {};
106
- }
107
- this._Manager.RecycleTexture(this);
108
- }
109
- }
110
-
111
- SetResourceInfo(resource_info) {
112
- resource_info.Id = this.IdToken;
113
- this._SyncingResourceInfo = resource_info;
114
- }
115
-
116
- GetResourceInfo() {
117
- return this._SyncingResourceInfo;
118
- }
119
-
120
- ReadSyncInfo() {
121
- const info = this._SyncingResourceInfo;
122
- this._SyncingResourceInfo = null;
123
- return info;
124
- }
125
-
126
- RegisterOnloadCallback(callback) {
127
- const id_token = this._OnloadCallbackIdGenerator++;
128
- this._OnloadCallbacks[`${id_token}`] = callback;
129
- this._OnloadCallbacksSize++;
130
- if (this._SyncingResourceInfo !== null) {
131
- this._SyncingResourceInfo.NdLd = 1;
132
- }
133
- return id_token;
134
- }
135
-
136
- UnregisterOnloadCallback(callback_id) {
137
- delete this._OnloadCallbacks[`${callback_id}`];
138
- this._OnloadCallbacksSize--;
139
- }
140
-
141
- InvokeOnloadCallbacks() {
142
- if (this._OnloadCallbacksSize > 0) {
143
- for (const a in this._OnloadCallbacks) {
144
- if (this._OnloadCallbacks.hasOwnProperty(a)) {
145
- this._OnloadCallbacks[a]();
146
- }
147
- }
148
- }
149
- }
150
-
151
- IsLoaded() {
152
- return this.LoadTime !== 0 && !this.Unloaded;
153
- }
154
- }
155
- Forge.RenderTextureDelegate = RenderTextureDelegate;
@@ -1,75 +0,0 @@
1
- import Forge from "../ForgeDefine";
2
-
3
- class DeprecatedRenderer {
4
- constructor() {
5
- Forge.sDeprecatedRenderer = this;
6
- // Create shared texture manager
7
- this._SharedTextureManager = this.CreateTextureManager();
8
- }
9
-
10
- SetUserId(user_id) {
11
- Forge.sRenderBridge.UpdateUserId(user_id);
12
- }
13
-
14
- GetScreenInfo() {
15
- return Forge.sRenderBridge.GetScreenInfo();
16
- }
17
-
18
- StringWithFont() {
19
- return Forge.sTextUtils.StringWithFont.apply(this, arguments);
20
- }
21
-
22
- GetTextWidth() {
23
- return Forge.sTextUtils.GetTextWidth.apply(this, arguments);
24
- }
25
-
26
- GetTextUtils() {
27
- return Forge.sTextUtils;
28
- }
29
-
30
- RectArea(x, y, w, h) {
31
- return new Forge.RectArea(x, y, w, h);
32
- }
33
-
34
- TextAttr() {
35
- return Forge.sTextUtils.TextAttr.apply(this, arguments);
36
- }
37
-
38
- GarbageCollect() {
39
- Forge.LogM("GarbageCollect called");
40
- }
41
-
42
- TriggerFrameDraw() {
43
- Forge.sRenderBridge.RequestSwap();
44
- }
45
-
46
- /**
47
- * 全局共享的TextureManager
48
- *
49
- * @public
50
- * @func GetSharedTextureManager
51
- * @memberof Forge.DeprecatedRenderer
52
- * @instance
53
- * @return {Forge.TextureManager} texture管理对象
54
- * */
55
- GetSharedTextureManager() {
56
- return this._SharedTextureManager;
57
- }
58
-
59
- /**
60
- * 创建一个TextureManager<br>
61
- * 请注意:使用Activity时,TextureManager已经在Activity内部进行构建,请不要额外构建
62
- *
63
- * @public
64
- * @func CreateTextureManager
65
- * @memberof Forge.DeprecatedRenderer
66
- * @instance
67
- * @return {Forge.TextureManager} texture管理对象
68
- * */
69
- CreateTextureManager() {
70
- const texture_manager = new Forge.TextureManager();
71
- return texture_manager;
72
- }
73
- }
74
- Forge.DeprecatedRenderer = DeprecatedRenderer;
75
- Forge.sDeprecatedRenderer = null;
@@ -1,139 +0,0 @@
1
- /*
2
- * @Author: ChenChanghua
3
- * @Date: 2020-07-20 09:37:37
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2020-09-21 13:47:49
6
- * @Description: file content
7
- */
8
- /* eslint-disable no-unused-vars */
9
- import URL from "./url";
10
-
11
- const AudioContext = window.AudioContext || window.webkitAudioContext;
12
- if (AudioContext) {
13
- const audioContext = new AudioContext();
14
- let soundIdCount = 0;
15
- let streamIdCount = 0;
16
-
17
- class Stream {
18
- constructor(context, bufferSource, gain) {
19
- this._Context = context;
20
- this._BufferSource = bufferSource;
21
- this._Gain = gain;
22
- this._BufferSource.connect(this._Gain);
23
- this._Gain.connect(this._Context.destination);
24
- }
25
-
26
- start(when, offset, duration) {
27
- this._BufferSource.start(when, offset, duration);
28
- }
29
-
30
- setVolume(volume) {
31
- this._Gain.gain.setValueAtTime(volume, this._Context.currentTime);
32
- }
33
-
34
- stop(when) {
35
- this._BufferSource.stop(when);
36
- }
37
- }
38
-
39
- class SoundPool {
40
- constructor() {
41
- this._SoundBufferMap = {};
42
- this._StreamMap = {};
43
- }
44
-
45
- load(url, netsetting, priority, callback) {
46
- const realUrl = new URL(url).href;
47
- const soundId = soundIdCount++;
48
- this._requestBuffer(realUrl, (status, response) => {
49
- if (status === 0) {
50
- audioContext.decodeAudioData(response, (buffer) => {
51
- this._SoundBufferMap[soundId] = buffer;
52
- callback(soundId, 0);
53
- });
54
- } else {
55
- callback(-1, -1);
56
- }
57
- });
58
- return soundId;
59
- }
60
-
61
- unload(soundId) {
62
- delete this._SoundBufferMap[soundId];
63
- }
64
-
65
- autoPause() { }
66
-
67
- autoResume() { }
68
-
69
- play(soundId, leftVolume, rightVolume, priority, loop, rate) {
70
- if (this._SoundBufferMap[soundId]) {
71
- const streamId = streamIdCount++;
72
- const bufferSource = audioContext.createBufferSource();
73
- bufferSource.buffer = this._SoundBufferMap[soundId];
74
- bufferSource.playbackRate.value = rate;
75
- bufferSource.onended = (event) => {
76
- this.stop(streamId);
77
- };
78
- if (loop > 0) {
79
- bufferSource.loop = true;
80
- }
81
- const gainNode = audioContext.createGain();
82
- gainNode.gain.setValueAtTime(leftVolume, audioContext.currentTime);
83
- const stream = new Stream(audioContext, bufferSource, gainNode);
84
- this._StreamMap[streamId] = stream;
85
- console.log("loop test", (loop + 1) * this._SoundBufferMap[soundId].duration);
86
- stream.start(0, 0, (loop + 1) * this._SoundBufferMap[soundId].duration);
87
- return streamId;
88
- }
89
- return -1;
90
- }
91
-
92
- pause(streamId) { }
93
-
94
- resume(streamId) { }
95
-
96
- stop(streamId) {
97
- if (this._StreamMap[streamId]) {
98
- this._StreamMap[streamId].stop();
99
- delete this._StreamMap[streamId];
100
- }
101
- }
102
-
103
- release() {
104
- this._SoundBufferMap = {};
105
- this._StreamMap = {};
106
- }
107
-
108
- setVolume(streamId, leftVolume, rightVolume) {
109
- if (this._StreamMap[streamId]) {
110
- this._StreamMap[streamId].setVolume(leftVolume);
111
- }
112
- }
113
-
114
- setPriority(streamId, priority) { }
115
-
116
- setRate(streamId, rate) { }
117
-
118
- setLoop(streamId, loop) { }
119
-
120
- _requestBuffer(url, callback) {
121
- const xhr = new XMLHttpRequest();
122
- xhr.open('GET', url, true);
123
- xhr.responseType = 'arraybuffer';
124
- xhr.onload = () => {
125
- if (xhr.status === 200) {
126
- console.log("http request succeed");
127
- callback(0, xhr.response);
128
- } else {
129
- console.error(`download audio ${url} failed.`, xhr.status);
130
- callback(-1, null);
131
- }
132
- };
133
- xhr.send();
134
- }
135
- }
136
- window.SoundPool = SoundPool;
137
- } else {
138
- window.SoundPool = null;
139
- }
@@ -1,192 +0,0 @@
1
- /**
2
- * Created by ludl on 6/11/20.
3
- */
4
- /* eslint-disable no-unused-vars */
5
- import Forge from "../ForgeDefine";
6
- import { animationToStyle, getStaticFrameControl } from "./animation_keyframe";
7
-
8
- let sKeyFrameTokenGenerator = 0;
9
-
10
- class StepsAnimation extends Forge.AnimationDelegate {
11
- constructor(type_name, duration) {
12
- super(type_name, duration, null); // Easing 只支持linear形式
13
- this._StepsCount = 1;
14
- this._Running = false; // 记录动画是否被Cancel
15
- this._NextStepIndex = 0; // 记录动画运行的进度
16
-
17
- const that = this;
18
- this._OnStepEnd = () => {
19
- that._NextStep();
20
- };
21
- }
22
-
23
- SetStepsCount(steps_count) {
24
- this._StepsCount = steps_count;
25
- this._SplitSteps();
26
- }
27
-
28
- Start(layout_view) {
29
- super.Start(layout_view);
30
-
31
- // 激活步骤进度监听处理
32
- if (!window.jsvInAndroidWebView) {
33
- this._LayoutViewRef.Element.addEventListener("animationend", this._OnStepEnd);
34
- } else {
35
- this._LayoutViewRef.Element.addEventListener("webkitAnimationEnd", this._OnStepEnd);
36
- }
37
-
38
- // 开始动画
39
- this._Running = true;
40
- this._NextStep();
41
- }
42
-
43
- Cancel() {
44
- // 仅调整状态,在当前步骤的动画完成后,会进入停止处理
45
- this._Running = false;
46
- }
47
-
48
- _NextStep() {
49
- // 回收KeyFrame
50
- if (this._KeyFrameName !== null) {
51
- getStaticFrameControl().removeRule(this._KeyFrameName);
52
- this._KeyFrameName = null;
53
- }
54
-
55
- // 校验动画是否停止
56
- const on_end = (this._NextStepIndex === this._StepsCount);
57
- if (!this._Running || on_end) {
58
- // 动画结束
59
- this._PerformAnimationEnd(on_end);
60
- return;
61
- }
62
-
63
- // 描画下一步动画
64
- const animation = this._CreateOneStepKeyFrame(this._NextStepIndex);
65
- this._KeyFrameName = animation.name;
66
- getStaticFrameControl().insertRule(animation.keyFrameString);
67
-
68
- const style_animation = animationToStyle({
69
- repeatTimes: this.repeatTimes,
70
- easing: this.easing,
71
- delayedTime: 0,
72
- duration: this.duration / this._StepsCount
73
- }, this._KeyFrameName);
74
- const html_element = this._LayoutViewRef.Element;
75
-
76
- if (!window.jsvInAndroidWebView) {
77
- html_element.style.animation = style_animation;
78
- } else {
79
- html_element.style.webkitAnimation = style_animation;
80
- }
81
-
82
- this._NextStepIndex++;
83
- }
84
-
85
- _PerformAnimationEnd(on_end) {
86
- // 清理OnEndListener监听,否则会重复收到
87
- if (!window.jsvInAndroidWebView) {
88
- this._LayoutViewRef.Element.removeEventListener("animationend", this._OnStepEnd);
89
- } else {
90
- this._LayoutViewRef.Element.removeEventListener("webkitAnimationEnd", this._OnStepEnd);
91
- }
92
-
93
- const progress = this._NextStepIndex / this._StepsCount;
94
-
95
- if ((this.enableFlags & Forge.AnimationEnable.KeepTransform) !== 0) {
96
- const frozen_transform = this._GetFrozenTransform(this._NextStepIndex - 1);
97
- this._LayoutViewRef.ResetCssTransform(
98
- frozen_transform.transform,
99
- frozen_transform.transformOrigin);
100
- }
101
-
102
- // 注意: OnEnd处理放在transform制作之后
103
- if (on_end) {
104
- this.OnEnd();
105
- }
106
-
107
- // 进度信息要异步回调,模拟JsView native的场景
108
- window.setTimeout((() => {
109
- this.OnFinalProgress(progress);
110
- }), 0);
111
- }
112
-
113
- _GetFrozenTransform(current_index) {
114
- // should override
115
- console.warn("Warning:Should override and keep view transform by ResetCssTransform()");
116
- }
117
-
118
- _SplitSteps() {
119
- // should override
120
- console.warn("Warning: should be override by child class");
121
- }
122
-
123
- _CreateOneStepKeyFrame(next_step_index) {
124
- // should override
125
- console.warn("Warning: should be override by child class");
126
- }
127
- }
128
-
129
- Forge.TranslateStepAnimation = class extends StepsAnimation {
130
- constructor(start_x, end_x, start_y, end_y, duration) {
131
- super("TL-S", duration);
132
-
133
- this.startX = start_x;
134
- this.startY = start_y;
135
- this.endX = end_x;
136
- this.endY = end_y;
137
- this._StepsArray = null;
138
- }
139
-
140
- // Override
141
- _SplitSteps() {
142
- const steps_count = this._StepsCount;
143
- const x_step_distance = (this.endX - this.startX) / steps_count;
144
- const y_step_distance = (this.endY - this.startY) / steps_count;
145
- this._StepsArray = new Array(steps_count);
146
- let x = this.startX;
147
- let y = this.startY;
148
- for (let i = 0; i < steps_count - 1; i++) {
149
- x += x_step_distance;
150
- y += y_step_distance;
151
- this._StepsArray[i] = {
152
- targetX: Math.floor(x),
153
- targetY: Math.floor(y),
154
- };
155
- }
156
- // 最后一项
157
- this._StepsArray[steps_count - 1] = {
158
- targetX: this.endX,
159
- targetY: this.endY,
160
- };
161
- }
162
-
163
- // Override
164
- _CreateOneStepKeyFrame(next_step_index) {
165
- // 计算动画起始位置
166
- let start_x = 0;
167
- let start_y = 0;
168
- if (next_step_index === 0) {
169
- start_x = this.startX;
170
- start_y = this.startY;
171
- } else {
172
- start_x = this._StepsArray[next_step_index - 1].targetX;
173
- start_y = this._StepsArray[next_step_index - 1].targetY;
174
- }
175
-
176
- // 计算动画结束位置
177
- const end_x = this._StepsArray[next_step_index].targetX;
178
- const end_y = this._StepsArray[next_step_index].targetY;
179
-
180
- const keyframe_name = `_ForgeStepAnim_TL_${sKeyFrameTokenGenerator++}`;
181
- const keyframe_string = `@keyframes ${keyframe_name} {
182
- 0%{transform:translate3d(${start_x}px,${start_y}px,0);}
183
- 100%{transform:translate3d(${end_x}px,${end_y}px,0);}}`;
184
- return { name: keyframe_name, keyFrameString: keyframe_string };
185
- }
186
-
187
- // Override
188
- _GetFrozenTransform(current_index) {
189
- const transform = `translate3d(${this._StepsArray[current_index].targetX}px,${this._StepsArray[current_index].targetY}px,0)`;
190
- return { transform, transformOrigin: null };
191
- }
192
- };