@shijiu/jsview-vue-samples 2.1.367-test.0 → 2.1.435

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 (37) hide show
  1. package/CoupletsTest/App.vue +37 -52
  2. package/CoupletsTest/widget/Fireworks/Fireworks.vue +173 -45
  3. package/DemoHomepage/router.js +21 -5
  4. package/FlexCellDemo/App.vue +315 -0
  5. package/FlexCellDemo/images/1.png +0 -0
  6. package/FlexCellDemo/images/2.png +0 -0
  7. package/FlexCellDemo/images/3.png +0 -0
  8. package/FlexCellDemo/images/4.jpg +0 -0
  9. package/FlexCellDemo/images/5.png +0 -0
  10. package/GradientTexture/App.vue +135 -0
  11. package/ImpactStop/App.vue +1 -1
  12. package/LongText/LongTextScroll.vue +3 -7
  13. package/QrcodeDemo/App.vue +37 -9
  14. package/SceneTransition/App.vue +268 -0
  15. package/SceneTransition/JsvSceneTransition.vue +167 -0
  16. package/SceneTransition/images/mask/1.png +0 -0
  17. package/SceneTransition/images/mask/10.png +0 -0
  18. package/SceneTransition/images/mask/11.png +0 -0
  19. package/SceneTransition/images/mask/12.png +0 -0
  20. package/SceneTransition/images/mask/2.png +0 -0
  21. package/SceneTransition/images/mask/3.png +0 -0
  22. package/SceneTransition/images/mask/4.png +0 -0
  23. package/SceneTransition/images/mask/5.png +0 -0
  24. package/SceneTransition/images/mask/6.png +0 -0
  25. package/SceneTransition/images/mask/7.png +0 -0
  26. package/SceneTransition/images/mask/8.png +0 -0
  27. package/SceneTransition/images/mask/9.png +0 -0
  28. package/SceneTransition/maskConfig/config1.js +101 -0
  29. package/SceneTransition/maskConfig/config2.js +88 -0
  30. package/SceneTransition/maskConfig/config3.js +102 -0
  31. package/SecTorTest/App.vue +145 -23
  32. package/SwiperTest/App.vue +4 -4
  33. package/TextureStoreTest/App.vue +111 -45
  34. package/TouchWidget/App.vue +95 -0
  35. package/TouchWidget/Item.vue +64 -0
  36. package/TouchWidget/WidgetItem.vue +96 -0
  37. package/package.json +1 -1
@@ -0,0 +1,315 @@
1
+ <!--
2
+ * @Author: ChenChanghua
3
+ * @Date: 2022-04-20 21:05:26
4
+ * @LastEditors: ChenChanghua
5
+ * @LastEditTime: 2022-07-08 11:16:52
6
+ * @Description: file content
7
+ -->
8
+ <script setup>
9
+ import { ref, reactive, onMounted } from "vue";
10
+ import { useRouter } from "vue-router";
11
+ import { JsvFlexDiv, jJsvRuntimeBridge } from "jsview";
12
+
13
+ import image1 from "./images/1.png";
14
+ import image2 from "./images/2.png";
15
+ import image3 from "./images/3.png";
16
+ import image4 from "./images/4.jpg";
17
+
18
+ const router = useRouter();
19
+
20
+ const enableManualDemo = false;
21
+ const enableTest1 = true;
22
+ const enableTest2 = true;
23
+ const enableTest3 = true;
24
+
25
+ const _onKeyDown = (ev) => {
26
+ if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
27
+ router.go(-1); // 有router时,是从DemoHomepage进入,回退
28
+ }
29
+
30
+ return true;
31
+ };
32
+
33
+ const _onSizeTest1_1 = (width, height) => {
34
+ console.log(`Flex ready Test1_1 w=${width} h=${height}`);
35
+ };
36
+ const _onSizeTest1_2 = (width, height) => {
37
+ console.log(`Flex ready Test1_2 w=${width} h=${height}`);
38
+ };
39
+
40
+ onMounted(() => {
41
+ jJsvRuntimeBridge.notifyPageLoaded();
42
+ });
43
+ </script>
44
+
45
+ <template>
46
+ <jsv-focus-block
47
+ autoFocus
48
+ :onAction="{
49
+ onKeyDown: _onKeyDown,
50
+ }"
51
+ >
52
+ <!-- 手动测试时打开 -->
53
+ <div
54
+ v-if="enableManualDemo"
55
+ :style="{
56
+ top: 150,
57
+ left: 50,
58
+ width: 300,
59
+ height: 400,
60
+ backgroundColor: 'rgba(0,128,128,0.5)',
61
+ fontSize: 12,
62
+ color: '#FF0000',
63
+ textAlign: 'center',
64
+ lineHeight: 16,
65
+ }"
66
+ >
67
+ <jsv-flex-div
68
+ :style="{
69
+ height: 400,
70
+ flexDirection: 'row',
71
+ flexWrap: 'wrap',
72
+ justifyContent: 'flex-end',
73
+ alignItems: 'flex-start',
74
+ alignContent: 'center',
75
+ }"
76
+ :onSized="_onSizeTest1_1"
77
+ >
78
+ <!-- 测试主轴尺寸未给的场景下的撑大处理, 复用父节点的width -->
79
+ <jsv-flex-div :style="{ flexWrap: 'wrap' }" :onSized="_onSizeTest1_2">
80
+ <img :src="image1" :style="{ height: 45 }" />
81
+ <img :src="image2" :style="{ height: 60 }" />
82
+ <img :src="image1" :style="{ height: 45 }" />
83
+ <img :src="image1" :style="{ height: 45 }" />
84
+ </jsv-flex-div>
85
+ <img :src="image3" :style="{ height: 50 }" />
86
+ <img :src="image4" :style="{ height: 50 }" />
87
+ </jsv-flex-div>
88
+ </div>
89
+
90
+ <!-- 测试人员自动测试时打开,最左端测试样例 -->
91
+ <div
92
+ v-if="!enableManualDemo && enableTest1"
93
+ :style="{
94
+ top: 150,
95
+ left: 50,
96
+ width: 300,
97
+ height: 400,
98
+ backgroundColor: 'rgba(0,128,128,0.5)',
99
+ }"
100
+ >
101
+ <jsv-flex-div
102
+ :style="{
103
+ height: 400,
104
+ flexDirection: 'row',
105
+ flexWrap: 'wrap',
106
+ justifyContent: 'flex-end',
107
+ alignItems: 'flex-start',
108
+ alignContent: 'center',
109
+ }"
110
+ :onSized="_onSizeTest1_1"
111
+ >
112
+ <!-- 测试主轴尺寸未给的场景下的撑大处理, 复用父节点的width -->
113
+ <jsv-flex-div :style="{ flexWrap: 'wrap' }" :onSized="_onSizeTest1_2">
114
+ <img :src="image1" :style="{ height: 45 }" />
115
+ <img :src="image2" :style="{ height: 60 }" />
116
+ <div :style="{ height: 60, width: 60, backgroundColor: '#FF0000' }" />
117
+ <img :src="image1" :style="{ height: 45 }" />
118
+ <img :src="image1" :style="{ height: 45 }" />
119
+ </jsv-flex-div>
120
+ <img :src="image3" :style="{ height: 50 }" />
121
+ <img :src="image4" :style="{ height: 50 }" />
122
+ </jsv-flex-div>
123
+ </div>
124
+
125
+ <!-- 测试人员自动测试时打开,中间测试样例 -->
126
+ <div
127
+ v-if="!enableManualDemo && enableTest2"
128
+ :style="{
129
+ top: 150,
130
+ left: 400,
131
+ width: 300,
132
+ height: 400,
133
+ backgroundColor: 'rgba(0,128,128,0.5)',
134
+ }"
135
+ >
136
+ <jsv-flex-div
137
+ :style="{
138
+ width: 300,
139
+ flexDirection: 'row-reverse',
140
+ flexWrap: 'wrap',
141
+ justifyContent: 'center',
142
+ alignItems: 'flex-end',
143
+ backgroundColor: 'rgba(128,0,0,0.5)',
144
+ }"
145
+ >
146
+ <!-- 测试主轴尺寸比内容的主轴尺寸小的场下的折行行为 -->
147
+ <jsv-flex-div
148
+ :style="{
149
+ width: 30,
150
+ flexWrap: 'wrap',
151
+ backgroundColor: 'rgba(0, 128, 0, 0.5)',
152
+ }"
153
+ >
154
+ <img :src="image1" :style="{ height: 50 }" />
155
+ <img :src="image2" :style="{ height: 50 }" />
156
+ </jsv-flex-div>
157
+ <img :src="image3" :style="{ height: 50 }" />
158
+ <img :src="image4" :style="{ height: 50 }" />
159
+ <img :src="image1" :style="{ height: 50 }" />
160
+ <img :src="image2" :style="{ height: 50 }" />
161
+ <img :src="image3" :style="{ height: 50 }" />
162
+ <img :src="image4" :style="{ height: 50 }" />
163
+
164
+ <!-- 测试内嵌div, 且div中子项有top/left设置(确认PC环境下是否有问题) -->
165
+ <div :style="{ height: 150, width: 100 }">
166
+ <div
167
+ :style="{
168
+ left: 25,
169
+ top: 50,
170
+ height: 50,
171
+ width: 50,
172
+ backgroundColor: '#FF0000',
173
+ }"
174
+ >
175
+ <div
176
+ :style="{
177
+ left: 10,
178
+ top: 10,
179
+ height: 30,
180
+ width: 30,
181
+ backgroundColor: '#00FF00',
182
+ }"
183
+ ></div>
184
+ </div>
185
+ </div>
186
+
187
+ <!-- 测试子项目的strech, 孙子为flex-start -->
188
+ <jsv-flex-div
189
+ :style="{
190
+ width: 60,
191
+ flexDirection: 'column',
192
+ alignSelf: 'stretch',
193
+ alignItems: 'flex-start',
194
+ }"
195
+ >
196
+ <img :src="image1" :style="{ height: 50 }" />
197
+ <img :src="image1" :style="{ height: 50 }" />
198
+ </jsv-flex-div>
199
+
200
+ <!-- 测试内容内嵌有子view -->
201
+ <div
202
+ :style="{
203
+ width: 80,
204
+ height: 80,
205
+ backgroundImage: `url(${image4})`,
206
+ }"
207
+ >
208
+ <img :src="image1" :style="{ left: 10, top: 10, height: 40 }" />
209
+ <img :src="image1" :style="{ left: 15, top: 15, height: 45 }" />
210
+ <img :src="image1" :style="{ left: 20, top: 20, height: 50 }" />
211
+ </div>
212
+ <div
213
+ :style="{
214
+ width: 80,
215
+ height: 80,
216
+ backgroundColor: '#0F0F7F',
217
+ }"
218
+ >
219
+ <img :src="image1" :style="{ left: 10, top: 10, height: 40 }" />
220
+ <img :src="image1" :style="{ left: 15, top: 15, height: 45 }" />
221
+ <img :src="image1" :style="{ left: 20, top: 20, height: 50 }" />
222
+ </div>
223
+ </jsv-flex-div>
224
+ </div>
225
+
226
+ <div
227
+ v-if="!enableManualDemo && enableTest3"
228
+ :style="{
229
+ top: 150,
230
+ left: 700,
231
+ width: 400,
232
+ height: 400,
233
+ overflow: 'hidden',
234
+ }"
235
+ >
236
+ <div
237
+ :style="{
238
+ left: 50,
239
+ width: 300,
240
+ height: 400,
241
+ backgroundColor: 'rgba(0,128,128,0.5)',
242
+ fontSize: 12,
243
+ color: '#000000',
244
+ textAlign: 'center',
245
+ lineHeight: 16,
246
+ }"
247
+ >
248
+ <jsv-flex-div
249
+ :style="{
250
+ width: 300,
251
+ height: 400,
252
+ flexDirection: 'column',
253
+ alignItems: 'flex-end',
254
+ justifyContent: 'center',
255
+ }"
256
+ >
257
+ <!-- 文字绘制区域超过容器尺寸的内容的测试 -->
258
+ <div :style="{ width: 450, backgroundColor: 'rgba(0, 50, 0, 0.5)' }">
259
+ {{
260
+ "对于涉嫌借款或其他涉及财产的网络信息、账户密码、广告或推广等信息的,用户请谨慎对待并自行判断,基于前述原因您因此遭受的利润、商业信誉、资料损失或其他有形或无形损失的,我们不承担任何直接、间接、附带、特别、衍生性或惩罚性的赔偿责任。"
261
+ }}
262
+ </div>
263
+
264
+ <!-- 文字绘制区域未超过容器尺寸的内容的测试 -->
265
+ <div :style="{ width: 250, backgroundColor: 'rgba(0, 70, 0, 0.5)' }">
266
+ {{
267
+ "对于涉嫌借款或其他涉及财产的网络信息、账户密码、广告或推广等信息的,用户请谨慎对待并自行判断,基于前述原因您因此遭受的利润、商业信誉、资料损失或其他有形或无形损失的,我们不承担任何直接、间接、附带、特别、衍生性或惩罚性的赔偿责任。"
268
+ }}
269
+ </div>
270
+
271
+ <!-- 超长折行文字测试点,文字字数大于3000字,最后一个字为'拾' -->
272
+ <div
273
+ :style="{
274
+ height: 16,
275
+ backgroundColor: 'rgba(0, 90, 0, 0.5)',
276
+ whiteSpace: 'nowrap',
277
+ }"
278
+ >
279
+ {{
280
+ "一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九拾"
281
+ }}
282
+ </div>
283
+
284
+ <!-- 短文字横向排布接续的测试 -->
285
+ <jsv-flex-div
286
+ :style="{
287
+ flexDirection: 'row',
288
+ alignItems: 'center',
289
+ backgroundColor: 'rgba(0, 110, 0, 0.5)',
290
+ }"
291
+ >
292
+ <div :style="{ height: 16 }">
293
+ {{ "++一二三" }}
294
+ </div>
295
+ <div
296
+ :style="{
297
+ height: 20,
298
+ lineHeight: 20,
299
+ fontSize: 18,
300
+ backgroundColor: 'rgba(10, 0, 0, 0.5)',
301
+ }"
302
+ >
303
+ {{ "四五六" }}
304
+ </div>
305
+ <div :style="{ height: 16 }">
306
+ {{ "七八九++" }}
307
+ </div>
308
+ </jsv-flex-div>
309
+ </jsv-flex-div>
310
+ </div>
311
+ </div>
312
+ </jsv-focus-block>
313
+ </template>
314
+
315
+ <style scoped></style>
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,135 @@
1
+ <script setup>
2
+ /**
3
+ * 建议:
4
+ * 双色的渐变可以使用小尺寸的texture(4*4)以节省内存
5
+ * 多色的使用小尺寸的话可能会出现条纹, 使用div同尺寸的话内存消耗较大, 需要权衡
6
+ */
7
+ import { JsvTextureStoreApi } from "jsview";
8
+ import { ref } from "vue";
9
+
10
+ const divSize = 300;
11
+ const smallTextureSize = 4;
12
+
13
+ const createTexture = (from, to, size, colorList, positionList) => {
14
+ const canvasTexture = JsvTextureStoreApi.canvasTexture(size, size);
15
+ canvasTexture.drawLinearGradientRect(
16
+ from[0],
17
+ from[1],
18
+ to[0],
19
+ to[1],
20
+ colorList,
21
+ positionList
22
+ );
23
+ return canvasTexture.commit();
24
+ };
25
+ const twoColorSet = {
26
+ color: ["#00ff00", "#0000ff"],
27
+ position: [0, 1],
28
+ };
29
+ const multiColorSet = {
30
+ color: ["#ff0000", "#0000ff", "#00ff00", "#ff00ff"],
31
+ position: [0, 0.3, 0.8, 1],
32
+ };
33
+
34
+ const diagonalTwoColor = createTexture(
35
+ [0, 0],
36
+ [smallTextureSize, smallTextureSize],
37
+ smallTextureSize,
38
+ twoColorSet.color,
39
+ twoColorSet.position
40
+ );
41
+ const diagonalMultiColor = createTexture(
42
+ [0, 0],
43
+ [divSize, divSize],
44
+ divSize,
45
+ multiColorSet.color,
46
+ multiColorSet.position
47
+ );
48
+ const verticalTwoColor = createTexture(
49
+ [0, 0],
50
+ [0, smallTextureSize],
51
+ smallTextureSize,
52
+ twoColorSet.color,
53
+ twoColorSet.position
54
+ );
55
+ const verticalMultiColor = createTexture(
56
+ [0, 0],
57
+ [0, divSize],
58
+ divSize,
59
+ multiColorSet.color,
60
+ multiColorSet.position
61
+ );
62
+
63
+ const slashTwoColor = createTexture(
64
+ [0, Math.round(smallTextureSize / 3)],
65
+ [smallTextureSize, Math.round(smallTextureSize * 0.8)],
66
+ smallTextureSize,
67
+ twoColorSet.color,
68
+ twoColorSet.position
69
+ );
70
+
71
+ const slashMultiColor = createTexture(
72
+ [0, Math.round(divSize / 3)],
73
+ [divSize, Math.round(divSize * 0.8)],
74
+ divSize,
75
+ multiColorSet.color,
76
+ multiColorSet.position
77
+ );
78
+ </script>
79
+ <template>
80
+ <div :style="{ width: 1280, height: 720, backgroundColor: '#007788' }"></div>
81
+ <div :style="{ left: 20, top: 20 }">
82
+ <div
83
+ :style="{
84
+ width: divSize,
85
+ height: divSize,
86
+ backgroundImage: `jsvtexturestore://${diagonalTwoColor}`,
87
+ }"
88
+ ></div>
89
+ </div>
90
+ <div :style="{ left: 20, top: 20 + 320 }">
91
+ <div
92
+ :style="{
93
+ width: divSize,
94
+ height: divSize,
95
+ backgroundImage: `jsvtexturestore://${diagonalMultiColor}`,
96
+ }"
97
+ ></div>
98
+ </div>
99
+ <div :style="{ left: 20 + 320, top: 20 }">
100
+ <div
101
+ :style="{
102
+ width: divSize,
103
+ height: divSize,
104
+ backgroundImage: `jsvtexturestore://${verticalTwoColor}`,
105
+ }"
106
+ ></div>
107
+ </div>
108
+ <div :style="{ left: 20 + 320, top: 20 + 320 }">
109
+ <div
110
+ :style="{
111
+ width: divSize,
112
+ height: divSize,
113
+ backgroundImage: `jsvtexturestore://${verticalMultiColor}`,
114
+ }"
115
+ ></div>
116
+ </div>
117
+ <div :style="{ left: 20 + 640, top: 20 }">
118
+ <div
119
+ :style="{
120
+ width: divSize,
121
+ height: divSize,
122
+ backgroundImage: `jsvtexturestore://${slashTwoColor}`,
123
+ }"
124
+ ></div>
125
+ </div>
126
+ <div :style="{ left: 20 + 640, top: 20 + 320 }">
127
+ <div
128
+ :style="{
129
+ width: divSize,
130
+ height: divSize,
131
+ backgroundImage: `jsvtexturestore://${slashMultiColor}`,
132
+ }"
133
+ ></div>
134
+ </div>
135
+ </template>
@@ -14,7 +14,7 @@
14
14
  <!-- 滑块 -->
15
15
  <jsv-free-move-actor
16
16
  ref="actorRef"
17
- :top="520 - 30 + 1"
17
+ :top="520 - 30"
18
18
  :left="40"
19
19
  :width="30"
20
20
  :height="30"
@@ -69,16 +69,12 @@ onMounted(() => {
69
69
  });
70
70
  </script>
71
71
 
72
-
73
72
  <template>
74
- <jsv-focus-block
75
- ref="rootRef"
76
- name="longTextScroll"
77
- :onAction="onAction"
78
- >
73
+ <jsv-focus-block ref="rootRef" name="longTextScroll" :onAction="onAction">
79
74
  <div :style="{ overflow: 'hidden', ...style }">
80
75
  <div
81
76
  ref="element"
77
+ data-jsv-perf-loadtex="auto"
82
78
  :style="{ top: textY, width: style.width, ...textStyle }"
83
79
  >
84
80
  {{
@@ -188,4 +184,4 @@ onMounted(() => {
188
184
  :scrollBlockStyle="scrollBlockStyle"
189
185
  />
190
186
  </jsv-focus-block>
191
- </template>
187
+ </template>
@@ -1,10 +1,11 @@
1
1
  <script setup>
2
+ import { shallowRef } from "vue";
2
3
  import { JsvQrcode } from "jsview";
3
4
  import { useRouter } from "vue-router";
4
5
 
5
6
  const router = useRouter();
6
- const value = "http://www.baidu.com/";
7
- const size = 400;
7
+ let qrUrl = shallowRef("http://www.baidu.com/");
8
+ const size = 200;
8
9
  const fgColor = "#0000FF";
9
10
  const bgColor = "#ffff00";
10
11
  const level = "H"; // ,容错级别,分别是L(7%)、M(15%)、Q(25%)、H(30%),
@@ -13,13 +14,23 @@ const imageH = 64;
13
14
  const imageW = 64;
14
15
  const imageSrc =
15
16
  "http://oss.image.qcast.cn/homepage/20191224/0fdcdc8b258fe7baac16b73f58f8989d.jpg";
16
- const tipsInfo = `功能:二维码展示可配置项:1.前景色
17
- 2.背景色
18
- 3.指定小图标
19
- 4.容错级别:'L', 'M', 'Q', 'H'`;
17
+ const tipsInfo = `功能:二维码展示可配置项:
18
+
19
+ 1.前景色
20
+
21
+ 2.背景色
22
+
23
+ 3.指定小图标
24
+
25
+ 4.容错级别:'L', 'M', 'Q', 'H'
26
+
27
+ 5.按OK刷新:上图为异步(不影响操作),下图为同步`;
20
28
  const onKeyDown = (ev) => {
21
29
  if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
22
30
  router.go(-1); // 有router时,是从DemoHomepage进入,回退
31
+ } else if (ev.keyCode == 13) {
32
+ qrUrl.value = qrUrl.value + "a";
33
+ console.log("new url=" + qrUrl.value);
23
34
  }
24
35
  return true;
25
36
  };
@@ -36,8 +47,8 @@ const onKeyDown = (ev) => {
36
47
  <div
37
48
  :style="{
38
49
  textAlign: 'left',
39
- fontSize: 30,
40
- lineHeight: 50,
50
+ fontSize: 25,
51
+ lineHeight: 30,
41
52
  color: '#ffffff',
42
53
  left: 200 + 420,
43
54
  top: 100,
@@ -50,11 +61,28 @@ const onKeyDown = (ev) => {
50
61
  </div>
51
62
  <div :style="{ left: 200, top: 100 }">
52
63
  <jsv-qrcode
53
- :value="value"
64
+ :key="qrUrl"
65
+ :value="qrUrl"
66
+ :size="size"
67
+ :fgColor="fgColor"
68
+ :bgColor="bgColor"
69
+ :level="level"
70
+ :imageSettings="
71
+ includeImage
72
+ ? { src: imageSrc, height: imageH, width: imageW }
73
+ : null
74
+ "
75
+ />
76
+ </div>
77
+ <div :style="{ left: 200, top: 310 }">
78
+ <jsv-qrcode
79
+ :key="qrUrl"
80
+ :value="qrUrl"
54
81
  :size="size"
55
82
  :fgColor="fgColor"
56
83
  :bgColor="bgColor"
57
84
  :level="level"
85
+ sync="sync"
58
86
  :imageSettings="
59
87
  includeImage
60
88
  ? { src: imageSrc, height: imageH, width: imageW }