@shijiu/jsview-vue 1.9.648 → 1.9.719

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 (157) hide show
  1. package/package.json +7 -18
  2. package/samples/AnimPicture/App.vue +5 -5
  3. package/samples/Basic/components/div/DivLayout.vue +1 -1
  4. package/samples/Basic/components/text/TextOverflow.vue +10 -5
  5. package/samples/BasicFocusControl/components/BaseBlock.vue +2 -2
  6. package/samples/Collision/App.vue +452 -0
  7. package/samples/DemoHomepage/components/BodyFrame.vue +2 -0
  8. package/samples/DemoHomepage/router.js +21 -1
  9. package/samples/DemoHomepage/views/Homepage.vue +3 -7
  10. package/samples/FilterDemo/App.vue +1 -1
  11. package/samples/FlipCard/App.vue +2 -2
  12. package/samples/FlipCard/FlipCard.vue +2 -2
  13. package/samples/GridDemo/App.vue +3 -3
  14. package/samples/GridDemo/ButtonBlock.vue +2 -2
  15. package/samples/GridDemo/FocusItem.vue +2 -2
  16. package/samples/GridDemo/Item.vue +1 -1
  17. package/samples/HashHistory/App.vue +10 -3
  18. package/samples/HashHistory/components/Item.vue +1 -1
  19. package/samples/ImpactStop/App.vue +435 -0
  20. package/samples/Input/App.vue +8 -17
  21. package/samples/Input/InputPanel.vue +19 -12
  22. package/samples/LongImage/Button.vue +1 -1
  23. package/samples/LongImage/ButtonItem.vue +1 -1
  24. package/samples/LongImage/LongImageScroll.vue +2 -2
  25. package/samples/LongText/App.vue +1 -1
  26. package/samples/LongText/Button.vue +1 -1
  27. package/samples/LongText/ButtonItem.vue +1 -1
  28. package/samples/LongText/LongTextScroll.vue +3 -3
  29. package/samples/Marquee/App.vue +176 -40
  30. package/samples/Marquee/longText.js +14 -0
  31. package/samples/MetroWidgetDemos/Advanced/App.vue +5 -6
  32. package/samples/MetroWidgetDemos/Advanced/ButtonItem.vue +3 -3
  33. package/samples/MetroWidgetDemos/Advanced/Buttons.vue +5 -5
  34. package/samples/MetroWidgetDemos/Advanced/Mixed.vue +4 -4
  35. package/samples/MetroWidgetDemos/Advanced/widgets/Item.vue +83 -0
  36. package/samples/MetroWidgetDemos/Advanced/widgets/WidgetItem.vue +89 -0
  37. package/samples/MetroWidgetDemos/Advanced/{Widgets.vue → widgets/Widgets.vue} +56 -11
  38. package/samples/MetroWidgetDemos/Advanced/widgets/focus1.png +0 -0
  39. package/samples/MetroWidgetDemos/Item.vue +20 -2
  40. package/samples/MetroWidgetDemos/PerformanceTest/App.vue +4 -4
  41. package/samples/MetroWidgetDemos/PerformanceTest/components/ContentItem.vue +1 -1
  42. package/samples/MetroWidgetDemos/PerformanceTest/components/MyTab.vue +1 -1
  43. package/samples/MetroWidgetDemos/PingPong/App.vue +3 -3
  44. package/samples/MetroWidgetDemos/PingPong/AppPage.vue +17 -2
  45. package/samples/MetroWidgetDemos/PingPong/AppTab.vue +3 -10
  46. package/samples/MetroWidgetDemos/PingPong/{Item.vue → TabItem.vue} +3 -11
  47. package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +2 -2
  48. package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +2 -2
  49. package/samples/MetroWidgetDemos/Simple/App.vue +2 -2
  50. package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +6 -6
  51. package/samples/MetroWidgetDemos/WidgetItem.vue +2 -2
  52. package/samples/MetroWidgetDemos/data.js +2 -1
  53. package/samples/NinePatchDemo/App.vue +2 -2
  54. package/samples/NinePatchDemo/Item.vue +1 -1
  55. package/samples/Preload/App.vue +17 -12
  56. package/samples/Preload/Item.vue +1 -1
  57. package/samples/QrcodeDemo/App.vue +1 -1
  58. package/samples/ScaleDownNeon/App.vue +107 -0
  59. package/samples/SoundPool/App.vue +1 -1
  60. package/samples/TextBox/App.vue +9 -82
  61. package/samples/TextBox/RenderCenter.vue +40 -16
  62. package/samples/TextBox/RenderLeft.vue +48 -19
  63. package/samples/TextBox/RenderOneLine.vue +30 -49
  64. package/samples/TextBox/RenderRight.vue +40 -16
  65. package/samples/TextShadowDemo/App.vue +11 -17
  66. package/samples/TextureAnimation/App2.vue +43 -15
  67. package/samples/TextureAnimation/assets/light.png +0 -0
  68. package/samples/TextureAnimation/assets/light2.png +0 -0
  69. package/samples/TextureSize/App.vue +3 -3
  70. package/samples/TouchSample/MetroWidgetHorizontal.vue +1 -1
  71. package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
  72. package/samples/TransitPage/App.vue +1 -1
  73. package/samples/VideoDemo/App.vue +8 -8
  74. package/samples/VideoDemo/components/Button.vue +1 -1
  75. package/samples/VisibleSensorDemo/App.vue +94 -27
  76. package/tsconfig.json +6 -6
  77. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +55 -59
  78. package/utils/JsViewEngineWidget/JsvFocusManager.js +1 -1
  79. package/utils/JsViewEngineWidget/MetroWidget/Const.js +11 -0
  80. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +226 -107
  81. package/utils/JsViewEngineWidget/TemplateParser.js +227 -178
  82. package/utils/JsViewEngineWidget/WidgetCommon.js +13 -5
  83. package/utils/JsViewEngineWidget/index.js +3 -2
  84. package/utils/JsViewPlugin/BrowserPluginLoader.js +1 -1
  85. package/utils/JsViewPlugin/JsvPlayer/JsvMedia.js +95 -12
  86. package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +23 -2
  87. package/utils/JsViewPlugin/JsvPlayer/JsvPlayerBrowser.vue +1 -1
  88. package/utils/JsViewPlugin/JsvPlayer/index.js +22 -1
  89. package/utils/JsViewPlugin/JsvPlayer/version.js +4 -4
  90. package/utils/JsViewVueTools/JsvImpactTracer.js +113 -0
  91. package/utils/JsViewVueTools/JsvStyleClass.js +1 -1
  92. package/utils/JsViewVueTools/index.js +2 -1
  93. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +11 -1
  94. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +1 -1
  95. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +7 -9
  96. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +1 -1
  97. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +3 -3
  98. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +1 -1
  99. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +5 -5
  100. package/utils/JsViewVueWidget/JsvFilterView.vue +1 -1
  101. package/utils/JsViewVueWidget/JsvGrid.vue +3 -11
  102. package/utils/JsViewVueWidget/JsvInput/Cursor.vue +5 -3
  103. package/utils/JsViewVueWidget/JsvInput/JsvInput.vue +15 -14
  104. package/utils/JsViewVueWidget/JsvMarquee.vue +180 -207
  105. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +2 -2
  106. package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +35 -27
  107. package/utils/JsViewVueWidget/JsvNinePatch.vue +1 -2
  108. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +38 -42
  109. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +1 -1
  110. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +1 -1
  111. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +24 -8
  112. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +23 -3
  113. package/utils/JsViewVueWidget/JsvTextBox.vue +20 -86
  114. package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +2 -9
  115. package/utils/JsViewVueWidget/JsvTouchContainer.vue +6 -7
  116. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +1 -1
  117. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +6 -6
  118. package/utils/JsViewVueWidget/index.js +8 -8
  119. package/utils/JsViewVueWidget/utils/index.js +8 -0
  120. package/utils/JsViewVueWidget/utils/text.js +19 -0
  121. package/dom/bin/jsview-browser-debug-dom.min.js +0 -1
  122. package/dom/bin/jsview-dom.min.js +0 -1
  123. package/dom/bin/jsview-forge-define.min.js +0 -1
  124. package/dom/browser-root-style.css +0 -21
  125. package/dom/jsv-browser-debug-dom.js +0 -8
  126. package/dom/jsv-dom.js +0 -6
  127. package/dom/jsv-forge-define.js +0 -6
  128. package/dom/target_core_revision.mjs +0 -15
  129. package/loader/header_script_loader.js +0 -134
  130. package/loader/jsview-main.js +0 -42
  131. package/loader/jsview.config.default.js +0 -37
  132. package/loader/jsview.default.config.js +0 -37
  133. package/loader/loader.js +0 -179
  134. package/loader/loader_webkit.js +0 -40
  135. package/patches/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js +0 -17609
  136. package/patches/node_modules/@vue/compiler-sfc/dist/jsview-css-to-js.js +0 -335
  137. package/patches/node_modules/@vue/compiler-sfc/dist/jsview-style-format.js +0 -446
  138. package/patches/node_modules/@vue/compiler-sfc/dist/jsview-style-types.js +0 -91
  139. package/patches/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +0 -8038
  140. package/patches/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js +0 -1700
  141. package/patches/node_modules/postcss-js/objectifier.js +0 -90
  142. package/patches/node_modules/vite/dist/node/chunks/dep-0fc8e132.js +0 -63147
  143. package/patches/node_modules/vite/dist/node/jsview.vite.config.js +0 -50
  144. package/patches/node_modules/vue-router/dist/vue-router.mjs +0 -3595
  145. package/scripts/common.js +0 -58
  146. package/scripts/jsview-install-local-packages.js +0 -73
  147. package/scripts/jsview-jsmap-serve.js +0 -105
  148. package/scripts/jsview-post-build.js +0 -183
  149. package/scripts/jsview-post-install.js +0 -102
  150. package/scripts/jsview-run-android.js +0 -67
  151. package/utils/JsViewEngineWidget/MetroPage.js +0 -2128
  152. package/utils/JsViewEngineWidget/SimpleWidget/ContentView.vue +0 -51
  153. package/utils/JsViewEngineWidget/SimpleWidget/Dispatcher.js +0 -19
  154. package/utils/JsViewEngineWidget/SimpleWidget/DivWrapper.vue +0 -53
  155. package/utils/JsViewEngineWidget/SimpleWidget/ItemView.vue +0 -142
  156. package/utils/JsViewEngineWidget/SimpleWidget/RootView.vue +0 -140
  157. package/utils/JsViewEngineWidget/SimpleWidget/SimpleWidget.vue +0 -1629
package/package.json CHANGED
@@ -1,35 +1,24 @@
1
1
  {
2
2
  "name": "@shijiu/jsview-vue",
3
3
  "sideEffects": [
4
- "*.css",
5
- "./index.js",
6
- "./dom/bin/*.js",
7
- "./dom/*.js",
8
- "./loader/*.js"
4
+ "./index.js"
9
5
  ],
10
- "version": "1.9.648",
11
- "bin": {
12
- "jsview-post-build": "./scripts/jsview-post-build.js",
13
- "jsview-post-install": "./scripts/jsview-post-install.js",
14
- "jsview-install-local-packages": "./scripts/jsview-install-local-packages.js"
15
- },
16
- "repository": "system/jsview-vue",
17
- "bugs": "http://gitlab.qcast.cn/system/jsview-vue/issues",
6
+ "version": "1.9.719",
7
+ "repository": "system/jsview-framework",
8
+ "bugs": "http://gitlab.qcast.cn/system/jsview-framework/issues",
18
9
  "keywords": [
19
10
  "jsview",
20
11
  "vue3",
21
- "jsview-vue",
22
- "jsview-dom",
23
- "jsview-utils",
24
- "jsview-docs"
12
+ "jsview-vue"
25
13
  ],
26
14
  "author": "mengxk",
27
- "homepage": "http://gitlab.qcast.cn/system/jsview-vue",
15
+ "homepage": "http://gitlab.qcast.cn/system/jsview-framework",
28
16
  "license": "MIT",
29
17
  "engines": {
30
18
  "node": ">=14.0.0"
31
19
  },
32
20
  "dependencies": {
21
+ "jsview": "0.0.0",
33
22
  "vue": "3.2.37",
34
23
  "vue-router": "4.1.4"
35
24
  },
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import { ref } from "vue";
9
+ import { ref, shallowRef } from "vue";
10
10
  import { useRouter, useRoute } from "vue-router";
11
11
  import { LoopType, JsvApic } from "jsview";
12
12
  import catRun from "./assets/animated_webp.webp";
@@ -53,10 +53,10 @@ const ballCallback = {
53
53
  ballPlay.value = false;
54
54
  },
55
55
  };
56
- let catRunRef = ref(null);
57
- let girlRunRef = ref(null);
58
- let quanRef = ref(null);
59
- let ballRef = ref(null);
56
+ let catRunRef = shallowRef(null);
57
+ let girlRunRef = shallowRef(null);
58
+ let quanRef = shallowRef(null);
59
+ let ballRef = shallowRef(null);
60
60
 
61
61
  const onKeyDown = (ev) => {
62
62
  if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
@@ -51,7 +51,7 @@
51
51
  </template>
52
52
 
53
53
  <script setup>
54
- import { ref, onUnmounted } from 'vue'
54
+ import { ref, shallowRef, onUnmounted } from 'vue'
55
55
 
56
56
  // v-show 控制
57
57
  let vShow = ref(false);
@@ -10,7 +10,12 @@ const baseStyle = {
10
10
  backgroundColor: "rgba(255, 255, 0, 0.5)",
11
11
  color: "rgba(255, 0, 0, 1)",
12
12
  };
13
- const multiLine =
13
+ const multiLineCut =
14
+ "多行文字(末尾截断):" +
15
+ '\n第一行:我末尾有个"\\n"' +
16
+ "\n第二行:一二三四五六七八九十,一二三四五六七八九十,一二三四五六七八九十" +
17
+ "\n第三行:一二三四五六七八九十,一二三四五六七八九十,一二三四五六七八九十";
18
+ const multiLineEllipsis =
14
19
  "多行文字(末尾省略):" +
15
20
  '\n第一行:我末尾有个"\\n"' +
16
21
  "\n第二行:一二三四五六七八九十,一二三四五六七八九十,一二三四五六七八九十" +
@@ -77,11 +82,11 @@ const multiLine =
77
82
  top: (blockSize.height + gap) * 4,
78
83
  height: 65,
79
84
  whiteSpace: 'pre-wrap',
80
- textOverflow: 'ellipsis',
85
+ textOverflow: 'clip',
81
86
  overflow: 'hidden',
82
87
  }"
83
88
  >
84
- 5.{{ multiLine }}
89
+ 5.{{ multiLineCut }}
85
90
  </div>
86
91
 
87
92
  <div
@@ -91,11 +96,11 @@ const multiLine =
91
96
  top: (blockSize.height + gap) * 4 + 67,
92
97
  height: 65,
93
98
  whiteSpace: 'pre-wrap',
94
- textOverflow: 'clip',
99
+ textOverflow: 'ellipsis',
95
100
  overflow: 'hidden',
96
101
  }"
97
102
  >
98
- 6.{{ multiLine }}
103
+ 6.{{ multiLineEllipsis }}
99
104
  </div>
100
105
  </div>
101
106
  </template>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { ref, onMounted } from "vue";
2
+ import { ref, shallowRef, onMounted } from "vue";
3
3
  const props = defineProps({
4
4
  name: String,
5
5
  style: {
@@ -12,7 +12,7 @@ const props = defineProps({
12
12
  });
13
13
 
14
14
  const fullName = ref("");
15
- const blockRef = ref(null);
15
+ const blockRef = shallowRef(null);
16
16
  const hasFocused = ref(false);
17
17
 
18
18
  onMounted(() => {
@@ -0,0 +1,452 @@
1
+ <!--
2
+ * @Author: ChenChanghua
3
+ * @Date: 2022-08-30 10:58:38
4
+ * @LastEditors: ChenChanghua
5
+ * @LastEditTime: 2022-08-30 14:20:46
6
+ * @Description: file content
7
+ -->
8
+ <script setup>
9
+ import { createImpactTracer, createImpactCallback } from "jsview";
10
+ import { ref, shallowRef, onMounted, onBeforeUnmount } from "vue";
11
+ import { useRouter } from "vue-router";
12
+
13
+ const router = useRouter();
14
+
15
+ const transEle1 = shallowRef(null),
16
+ transEle2 = shallowRef(null),
17
+ rotateEle1 = shallowRef(null),
18
+ rotateEle2 = shallowRef(null),
19
+ rotateEle3 = shallowRef(null),
20
+ rotateEle4 = shallowRef(null),
21
+ scaleEle1 = shallowRef(null),
22
+ scaleEle2 = shallowRef(null),
23
+ skewEle1 = shallowRef(null),
24
+ skewEle2 = shallowRef(null);
25
+
26
+ let sensors = [];
27
+
28
+ const tLeftColor = ref("#FF0000"),
29
+ tRightColor = ref("#00FF00"),
30
+ rLeftColor = ref("#FF0000"),
31
+ rRightColor = ref("#00FF00"),
32
+ r2LeftColor = ref("#FF0000"),
33
+ r2RightColor = ref("#00FF00"),
34
+ sLeftColor = ref("#FF0000"),
35
+ sRightColor = ref("#00FF00"),
36
+ skLeftColor = ref("#FF0000"),
37
+ skRightColor = ref("#00FF00");
38
+
39
+ const lastItemVisibility = ref("hidden"); // 验证View先声明碰撞检测再显示的场景,是否碰撞能正常生效
40
+ const lastItemGone = ref(false); // 验证碰撞对象关联的View从ViewTree拿掉后是否触发Native端的自清理处理
41
+
42
+ setTimeout(() => {
43
+ lastItemVisibility.value = "visible";
44
+ }, 1000);
45
+ setTimeout(() => {
46
+ lastItemGone.value = true;
47
+ }, 5000);
48
+
49
+ const onKeyDown = (ev) => {
50
+ if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
51
+ router?.go(-1); // 有router时,是从DemoHomepage进入,回退
52
+ }
53
+ return true;
54
+ };
55
+
56
+ onMounted(() => {
57
+ const translate_sensor = createImpactTracer(
58
+ transEle1.value,
59
+ transEle2.value,
60
+ createImpactCallback(
61
+ () => {
62
+ tLeftColor.value = "#00FFFF";
63
+ tRightColor.value = "#FFFF00";
64
+ },
65
+ () => {
66
+ tLeftColor.value = "#FF0000";
67
+ tRightColor.value = "#00FF00";
68
+ }
69
+ )
70
+ );
71
+ sensors.push(translate_sensor);
72
+
73
+ const rotate_count = { count: 0 };
74
+ const rotate_sensor = createImpactTracer(
75
+ rotateEle1.value,
76
+ rotateEle2.value,
77
+ createImpactCallback(
78
+ () => {
79
+ rLeftColor.value = "#00FFFF";
80
+ rRightColor.value = "#FFFF00";
81
+ },
82
+ () => {
83
+ rotate_count.count++;
84
+ if (rotate_count.count >= 2) {
85
+ // 旋转有头尾连续两次碰撞
86
+ console.log("Finish collision of rotate element");
87
+ }
88
+ rLeftColor.value = "#FF0000";
89
+ rRightColor.value = "#00FF00";
90
+ }
91
+ )
92
+ );
93
+ sensors.push(rotate_sensor);
94
+
95
+ const rotate2_sensor = createImpactTracer(
96
+ rotateEle3.value,
97
+ rotateEle4.value,
98
+ createImpactCallback(
99
+ () => {
100
+ r2LeftColor.value = "#00FFFF";
101
+ r2RightColor.value = "#FFFF00";
102
+ },
103
+ () => {
104
+ r2LeftColor.value = "#FF0000";
105
+ r2RightColor.value = "#00FF00";
106
+ }
107
+ )
108
+ );
109
+ sensors.push(rotate2_sensor);
110
+
111
+ const scale_sensor = createImpactTracer(
112
+ scaleEle1.value,
113
+ scaleEle2.value,
114
+ createImpactCallback(
115
+ () => {
116
+ sLeftColor.value = "#00FFFF";
117
+ sRightColor.value = "#FFFF00";
118
+ },
119
+ () => {
120
+ sLeftColor.value = "#FF0000";
121
+ sRightColor.value = "#00FF00";
122
+ }
123
+ )
124
+ );
125
+ sensors.push(scale_sensor);
126
+
127
+ const skew_sensor = createImpactTracer(
128
+ skewEle1.value,
129
+ skewEle2.value,
130
+ createImpactCallback(
131
+ () => {
132
+ skLeftColor.value = "#00FFFF";
133
+ skRightColor.value = "#FFFF00";
134
+ },
135
+ () => {
136
+ skLeftColor.value = "#FF0000";
137
+ skRightColor.value = "#00FF00";
138
+ }
139
+ )
140
+ );
141
+ sensors.push(skew_sensor);
142
+ });
143
+
144
+ onBeforeUnmount(() => {
145
+ for (let i = 0; i < sensors.length; i++) {
146
+ sensors[i].Recycle();
147
+ }
148
+ sensors = [];
149
+ });
150
+ </script>
151
+
152
+ <template>
153
+ <jsv-focus-block
154
+ autoFocus
155
+ :style="{
156
+ width: 1920,
157
+ height: 1080,
158
+ backgroundColor: '#007788',
159
+ }"
160
+ :onAction="{
161
+ onKeyDown: onKeyDown,
162
+ }"
163
+ >
164
+ <div
165
+ :style="{
166
+ textAlign: 'center',
167
+ fontSize: '30px',
168
+ lineHeight: '50px',
169
+ color: '#ffffff',
170
+ left: 100,
171
+ top: 20,
172
+ width: 1280 - 200,
173
+ height: 50,
174
+ backgroundColor: 'rgba(27,38,151,0.8)',
175
+ }"
176
+ >
177
+ 原生端辅助的高效率碰撞检测处理
178
+ </div>
179
+ <div :style="{ top: 200, left: 100 }">
180
+ <div
181
+ ref="transEle1"
182
+ :style="{
183
+ left: 0,
184
+ width: 100,
185
+ height: 100,
186
+ backgroundColor: tLeftColor,
187
+ animation: 'toRight 5s',
188
+ }"
189
+ >
190
+ view1
191
+ </div>
192
+ <div :style="{ left: 300 }">
193
+ <div
194
+ ref="transEle2"
195
+ :style="{
196
+ width: 100,
197
+ height: 100,
198
+ backgroundColor: tRightColor,
199
+ animation: 'toLeft 5s',
200
+ }"
201
+ >
202
+ view2
203
+ </div>
204
+ </div>
205
+ </div>
206
+
207
+ <div :style="{ top: 500, left: 100 }">
208
+ <div
209
+ ref="rotateEle1"
210
+ :style="{
211
+ left: 0,
212
+ width: 20,
213
+ height: 150,
214
+ backgroundColor: rLeftColor,
215
+ animation: 'rotate1 5s',
216
+ }"
217
+ >
218
+ view1
219
+ </div>
220
+ <div
221
+ ref="rotateEle2"
222
+ :style="{
223
+ left: 100,
224
+ width: 20,
225
+ height: 150,
226
+ backgroundColor: rRightColor,
227
+ animation: 'rotate2 5s',
228
+ }"
229
+ >
230
+ view2
231
+ </div>
232
+ </div>
233
+
234
+ <div :style="{ top: 500, left: 500 }">
235
+ <div
236
+ :style="{
237
+ top: 50,
238
+ left: 0,
239
+ width: 150,
240
+ height: 150,
241
+ backgroundColor: 'rgba(255,255,255,0.5)',
242
+ animation: 'rotate3 5s',
243
+ }"
244
+ >
245
+ <div
246
+ ref="rotateEle3"
247
+ :style="{
248
+ left: (150 - 20) / 2,
249
+ width: 20,
250
+ height: 150,
251
+ backgroundColor: r2LeftColor,
252
+ }"
253
+ >
254
+ view1
255
+ </div>
256
+ </div>
257
+ <div
258
+ :style="{
259
+ top: 0,
260
+ left: 100,
261
+ width: 150,
262
+ height: 150,
263
+ backgroundColor: 'rgba(255,255,255,0.5)',
264
+ animation: 'rotate4 5s',
265
+ }"
266
+ >
267
+ <div
268
+ ref="rotateEle4"
269
+ :style="{
270
+ left: 0,
271
+ top: (150 - 20) / 2,
272
+ width: 150,
273
+ height: 20,
274
+ backgroundColor: r2RightColor,
275
+ }"
276
+ >
277
+ view2
278
+ </div>
279
+ </div>
280
+ </div>
281
+
282
+ <div :style="{ top: 200, left: 500 }">
283
+ <div
284
+ ref="scaleEle1"
285
+ :style="{
286
+ left: 100,
287
+ width: 100,
288
+ height: 100,
289
+ backgroundColor: sLeftColor,
290
+ animation: 'scale1 5s',
291
+ }"
292
+ >
293
+ view1
294
+ </div>
295
+ <div
296
+ ref="scaleEle2"
297
+ :style="{
298
+ left: 250,
299
+ width: 100,
300
+ height: 100,
301
+ backgroundColor: sRightColor,
302
+ animation: 'scale2 5s',
303
+ }"
304
+ >
305
+ view2
306
+ </div>
307
+ </div>
308
+
309
+ <div
310
+ v-if="!lastItemGone"
311
+ :style="{
312
+ top: 500,
313
+ left: 800,
314
+ visibility: lastItemVisibility,
315
+ }"
316
+ >
317
+ <div
318
+ ref="skewEle1"
319
+ :style="{
320
+ left: 100,
321
+ width: 100,
322
+ height: 100,
323
+ backgroundColor: skLeftColor,
324
+ animation: 'skew1 5s',
325
+ }"
326
+ >
327
+ viewA
328
+ </div>
329
+ <div
330
+ ref="skewEle2"
331
+ :style="{
332
+ left: 300,
333
+ width: 100,
334
+ height: 100,
335
+ backgroundColor: skRightColor,
336
+ animation: 'skew2 5s',
337
+ }"
338
+ >
339
+ viewB
340
+ </div>
341
+ </div>
342
+ </jsv-focus-block>
343
+ </template>
344
+
345
+ <style scoped>
346
+ @keyframes toLeft {
347
+ from {
348
+ transform: translate3d(0, 0, 0) scale3d(0.5, 0.5, 1);
349
+ }
350
+ to {
351
+ transform: translate3d(-300px, 0, 0) scale3d(1.5, 1.5, 1);
352
+ }
353
+ }
354
+
355
+ @keyframes toRight {
356
+ from {
357
+ transform: translate3d(0, 0, 0) scale3d(0.5, 0.5, 1);
358
+ }
359
+ to {
360
+ transform: translate3d(300px, 0, 0) scale3d(1.5, 1.5, 1);
361
+ }
362
+ }
363
+
364
+ @keyframes rotate1 {
365
+ from {
366
+ transform: rotate3d(0, 0, 1, 0deg);
367
+ }
368
+ to {
369
+ transform: rotate3d(0, 0, 1, 360deg);
370
+ }
371
+ }
372
+
373
+ /* webview中 旋转轴为(0,0,-1)会导致getComputeStyle中的transform为单位矩阵*/
374
+ @keyframes rotate2 {
375
+ from {
376
+ transform: rotate3d(0, 0, 1, 0deg);
377
+ }
378
+ to {
379
+ transform: rotate3d(0, 0, 1, -360deg);
380
+ }
381
+ }
382
+
383
+ @keyframes scale1 {
384
+ 0% {
385
+ transform: scale3d(1, 1, 1);
386
+ }
387
+ 50% {
388
+ transform: scale3d(2, 2, 1);
389
+ }
390
+ 100% {
391
+ transform: scale3d(1, 1, 1);
392
+ }
393
+ }
394
+
395
+ @keyframes scale2 {
396
+ 0% {
397
+ transform: scale3d(1, 1, 1);
398
+ }
399
+ 50% {
400
+ transform: scale3d(2, 2, 1);
401
+ }
402
+ 100% {
403
+ transform: scale3d(1, 1, 1);
404
+ }
405
+ }
406
+
407
+ @keyframes skew1 {
408
+ 0% {
409
+ transform: skew(0, 0);
410
+ }
411
+ 50% {
412
+ transform: skew(-60deg, 0);
413
+ }
414
+ 100% {
415
+ transform: skew(0, 0);
416
+ }
417
+ }
418
+
419
+ @keyframes skew2 {
420
+ 0% {
421
+ transform: skew(0, 0);
422
+ }
423
+ 50% {
424
+ transform: skew(60deg, 0);
425
+ }
426
+ 100% {
427
+ transform: skew(0, 0);
428
+ }
429
+ }
430
+
431
+ @keyframes rotate3 {
432
+ from {
433
+ transform: rotate3d(0, 0, 1, 0deg);
434
+ transform-origin: center top;
435
+ }
436
+ to {
437
+ transform: rotate3d(0, 0, 1, -360deg);
438
+ transform-origin: center top;
439
+ }
440
+ }
441
+
442
+ @keyframes rotate4 {
443
+ from {
444
+ transform: rotate3d(0, 0, 1, 0deg);
445
+ transform-origin: center center;
446
+ }
447
+ to {
448
+ transform: rotate3d(0, 0, 1, -360deg);
449
+ transform-origin: center center;
450
+ }
451
+ }
452
+ </style>
@@ -12,6 +12,7 @@ export default {
12
12
  data: Array,
13
13
  name: String,
14
14
  onEdge: Function,
15
+ tabId: Number,
15
16
  },
16
17
  setup() {
17
18
  return {
@@ -36,6 +37,7 @@ export default {
36
37
  }
37
38
  this.$router.push(data.path);
38
39
  localStorage.curFocusId = index;
40
+ localStorage.curTab = this.tabId;
39
41
  },
40
42
  _provideData() {
41
43
  return this.data;
@@ -130,7 +130,7 @@ const routeList = [
130
130
  component: () => import("jsview/samples/TextureAnimation/App.vue"),
131
131
  },
132
132
  {
133
- name: "TextureAnimation2",
133
+ name: "焦点框旋转光效果",
134
134
  path: "/feature/TextureAnimation2",
135
135
  component: () => import("jsview/samples/TextureAnimation/App2.vue"),
136
136
  },
@@ -139,6 +139,26 @@ const routeList = [
139
139
  path: "/feature/FilterDemo",
140
140
  component: () => import("jsview/samples/FilterDemo/App.vue"),
141
141
  },
142
+ {
143
+ name: "预加载",
144
+ path: "/feature/Preload",
145
+ component: () => import("jsview/samples/Preload/App.vue"),
146
+ },
147
+ {
148
+ name: "图片缩小算法",
149
+ path: "/feature/ScaleDownNeon",
150
+ component: () => import("jsview/samples/ScaleDownNeon/App.vue"),
151
+ },
152
+ // {
153
+ // name: "碰撞检测",
154
+ // path: "/feature/Collision",
155
+ // component: () => import("jsview/samples/Collision/App"),
156
+ // },
157
+ // {
158
+ // name: "碰撞即停",
159
+ // path: "/feature/ImpactStop",
160
+ // component: () => import("jsview/samples/ImpactStop/App"),
161
+ // },
142
162
 
143
163
  // MetroWidget示例
144
164
  {
@@ -89,15 +89,12 @@ export default {
89
89
  }
90
90
  },
91
91
  tabItemFocus(data) {
92
- console.log("cchtest tabItemFocus");
93
92
  if (data.id != this.tabId) {
94
93
  this.tabId = data.id;
95
94
  this.contentData = dataList[this.tabId];
96
- localStorage.curTab = this.tabId;
97
95
  }
98
96
  },
99
97
  onDialogAction(msg) {
100
- console.log("cchtes dialog onaction", msg);
101
98
  this.showExitDialog = false;
102
99
  this.changeFocus(this.preFocusName);
103
100
  switch (msg) {
@@ -121,10 +118,8 @@ export default {
121
118
  localStorage.curTab = 0;
122
119
  this.contentData = dataList[this.tabId];
123
120
  },
124
- mounted() {
125
- },
126
- beforeUnmount() {
127
- },
121
+ mounted() {},
122
+ beforeUnmount() {},
128
123
  };
129
124
  </script>
130
125
 
@@ -162,6 +157,7 @@ export default {
162
157
  :data="contentData"
163
158
  :name="name + '/bodyFrame'"
164
159
  :onEdge="onContentEdge"
160
+ :tabId="tabId"
165
161
  />
166
162
  </div>
167
163
 
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import { ref, reactive, onMounted } from "vue";
9
+ import { ref, shallowRef, reactive, onMounted } from "vue";
10
10
  import { useRouter } from "vue-router";
11
11
  import { jJsvRuntimeBridge, JsvFilterView } from "jsview";
12
12
  import sample from "../assets/jpegDemo.jpeg";
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import { useRouter } from "vue-router";
3
- import { ref } from "vue";
3
+ import { ref, shallowRef } from "vue";
4
4
  import { HORIZONTAL, MetroWidget } from "jsview";
5
5
  import FlipCard from "./FlipCard.vue";
6
6
  import { data } from "./data.js";
@@ -8,7 +8,7 @@ import redEgg from "./assets/red_egg.png";
8
8
  import blueEgg from "./assets/blue_egg.png";
9
9
 
10
10
  const name = "/flipCard";
11
- const focusNode = ref(null);
11
+ const focusNode = shallowRef(null);
12
12
  const router = useRouter();
13
13
 
14
14
  const onKeyDown = (ev) => {