@shijiu/jsview-vue-samples 2.2.373 → 2.3.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 (181) hide show
  1. package/BakeViewDemo/AnimatePic.vue +1 -1
  2. package/Basic/components/text/TextDirection.vue +7 -2
  3. package/BasicFocusControl/components/BaseBlock.vue +65 -18
  4. package/BreakRender/assets/imageList.json +235 -235
  5. package/ColorSpace/App.vue +4 -4
  6. package/CoupletsTest/App.vue +1 -1
  7. package/CoupletsTest/widget/Banger/Banger.vue +3 -3
  8. package/CoupletsTest/widget/Banger/MaroonLoader.vue +5 -5
  9. package/CoupletsTest/widget/Couplets/Couplets.vue +4 -4
  10. package/CoupletsTest/widget/Fireworks/Fireworks.vue +13 -13
  11. package/CssPreprocessor/Stylus/components/stylus-group1/StylusOperations.vue +0 -1
  12. package/CssPreprocessor/utils/ContentBlock.vue +3 -3
  13. package/CssPreprocessor/utils/{FontStyle.css → FontConfig.css} +3 -3
  14. package/CssPreprocessor/utils/TitleBar.vue +2 -2
  15. package/CustomShader/App.vue +6 -6
  16. package/CustomShader/gaussianBlur.glsl +1 -1
  17. package/DashPath/App.vue +79 -0
  18. package/DashPath/AppForOperator.vue +35 -0
  19. package/DashPath/DashPath.vue +118 -0
  20. package/DemoForOperator/AnimPic/AnimPic.vue +47 -0
  21. package/DemoForOperator/AnimPic/App.vue +28 -0
  22. package/DemoForOperator/Banger/App.vue +26 -0
  23. package/DemoForOperator/Banger/Banger/Banger.vue +252 -0
  24. package/DemoForOperator/Banger/Banger/Maroon.vue +123 -0
  25. package/DemoForOperator/Banger/Banger/MaroonLoader.vue +78 -0
  26. package/DemoForOperator/Banger/Banger/SpriteDeal.js +30 -0
  27. package/DemoForOperator/Bounce/App.vue +43 -0
  28. package/DemoForOperator/Bounce/Bounce.vue +49 -0
  29. package/DemoForOperator/Bounce/FreeMoveBuilder.js +139 -0
  30. package/DemoForOperator/ChunLian/App.vue +47 -0
  31. package/DemoForOperator/ChunLian/Couplets.vue +248 -0
  32. package/DemoForOperator/EpisodeList/App.vue +80 -0
  33. package/DemoForOperator/EpisodeList/EpisodeList/Controller.vue +113 -0
  34. package/DemoForOperator/EpisodeList/EpisodeList/EpisodeList.vue +176 -0
  35. package/DemoForOperator/EpisodeList/GroupItem.vue +65 -0
  36. package/DemoForOperator/EpisodeList/ListItem.vue +48 -0
  37. package/DemoForOperator/Firework1/App.vue +25 -0
  38. package/DemoForOperator/Firework1/Fireworks.vue +358 -0
  39. package/DemoForOperator/Firework1/SpriteDeal.js +30 -0
  40. package/DemoForOperator/FlipPage/App.vue +75 -0
  41. package/DemoForOperator/FlipPage/FlipPage/FlipPage.vue +150 -0
  42. package/DemoForOperator/FlipPage/FlipPage/flipIn.glsl +41 -0
  43. package/DemoForOperator/FlipPage/FlipPage/flipOut.glsl +41 -0
  44. package/DemoForOperator/Focus/Alpha/AlphaFocusBox.vue +70 -0
  45. package/DemoForOperator/Focus/Alpha/AlphaPage.vue +40 -0
  46. package/DemoForOperator/Focus/Alpha/Item.vue +64 -0
  47. package/DemoForOperator/Focus/App.vue +124 -0
  48. package/DemoForOperator/Focus/CommonPageSetting.js +30 -0
  49. package/DemoForOperator/Focus/Item.vue +46 -0
  50. package/DemoForOperator/Focus/Light/Item.vue +67 -0
  51. package/DemoForOperator/Focus/Light/LightFocusBox.vue +46 -0
  52. package/DemoForOperator/Focus/Light/LightPage.vue +43 -0
  53. package/DemoForOperator/Focus/Light/utils/FrameCanvasStore.ts +68 -0
  54. package/DemoForOperator/Focus/Light/utils/RotateFrame.vue +146 -0
  55. package/DemoForOperator/Focus/Light/utils/circleHaloMask.png +0 -0
  56. package/DemoForOperator/Focus/Normal/Item.vue +64 -0
  57. package/DemoForOperator/Focus/Normal/NormalFocusBox.vue +53 -0
  58. package/DemoForOperator/Focus/Normal/NormalPage.vue +41 -0
  59. package/DemoForOperator/Focus/SwipeLight/Item.vue +73 -0
  60. package/DemoForOperator/Focus/SwipeLight/SwipeLightBox.vue +62 -0
  61. package/DemoForOperator/Focus/SwipeLight/SwipeLightPage.vue +44 -0
  62. package/DemoForOperator/FullscreenIn/App.vue +105 -0
  63. package/DemoForOperator/FullscreenIn/FullscreenPoster.vue +41 -0
  64. package/DemoForOperator/FullscreenIn/Item.vue +50 -0
  65. package/DemoForOperator/Genie/App.vue +78 -0
  66. package/DemoForOperator/Genie/geniePakcer/Genie.vue +699 -0
  67. package/DemoForOperator/Genie/geniePakcer/genieBottom.glsl +49 -0
  68. package/DemoForOperator/Genie/geniePakcer/genieLeft.glsl +50 -0
  69. package/DemoForOperator/Genie/geniePakcer/genieRight.glsl +57 -0
  70. package/DemoForOperator/Genie/geniePakcer/genieTop.glsl +50 -0
  71. package/DemoForOperator/GrayFilter/App.vue +51 -0
  72. package/DemoForOperator/GrayFilter/GrayFilter.vue +38 -0
  73. package/DemoForOperator/Jigsaw/App.vue +45 -0
  74. package/DemoForOperator/Jigsaw/JigsawFull.vue +100 -0
  75. package/DemoForOperator/Jigsaw/JigsawSingle.vue +86 -0
  76. package/DemoForOperator/Particle/App.vue +69 -0
  77. package/DemoForOperator/Particle/Drop/DropParticle.vue +176 -0
  78. package/DemoForOperator/Particle/Explode/ExplodeParticle.vue +99 -0
  79. package/DemoForOperator/PosterAnim/App.vue +125 -0
  80. package/DemoForOperator/PosterAnim/Bounce/BouncePage.vue +54 -0
  81. package/DemoForOperator/PosterAnim/Bounce/Item.vue +85 -0
  82. package/DemoForOperator/PosterAnim/Breath/BreathPage.vue +47 -0
  83. package/DemoForOperator/PosterAnim/Breath/Item.vue +58 -0
  84. package/DemoForOperator/PosterAnim/CommonPageSetting.js +30 -0
  85. package/DemoForOperator/PosterAnim/Item.vue +46 -0
  86. package/DemoForOperator/PosterAnim/PosterAnim.js +58 -0
  87. package/DemoForOperator/PosterAnim/Scale/Item.vue +72 -0
  88. package/DemoForOperator/PosterAnim/Scale/ScalePage.vue +48 -0
  89. package/DemoForOperator/PosterAnim/Shake/Item.vue +85 -0
  90. package/DemoForOperator/PosterAnim/Shake/ShakePage.vue +53 -0
  91. package/DemoForOperator/PosterOverflow/App.vue +116 -0
  92. package/DemoForOperator/PosterOverflow/Item.vue +67 -0
  93. package/DemoForOperator/PosterOverflow/PosterOverflow.vue +23 -0
  94. package/DemoForOperator/Ripple/App.vue +54 -0
  95. package/DemoForOperator/Ripple/Ripple.vue +50 -0
  96. package/DemoForOperator/ScalePoster/App.vue +4 -0
  97. package/DemoForOperator/ScalePoster/ScalePoster.vue +0 -0
  98. package/DemoForOperator/Sprite/App.vue +33 -0
  99. package/DemoForOperator/Sprite/Sprite.vue +90 -0
  100. package/DemoForOperator/Stretch/App.vue +103 -0
  101. package/DemoForOperator/Stretch/Stretch/Item.vue +192 -0
  102. package/DemoForOperator/Stretch/Stretch/Stretch.vue +168 -0
  103. package/DemoForOperator/TabContent/App.vue +89 -0
  104. package/DemoForOperator/TabContent/ContentPage.vue +66 -0
  105. package/DemoForOperator/TabContent/Item.vue +85 -0
  106. package/DemoForOperator/TabContent/PageItem.vue +40 -0
  107. package/DemoForOperator/TabContent/TabContent/CreepFocus.vue +160 -0
  108. package/DemoForOperator/TabContent/TabContent/Item.vue +63 -0
  109. package/DemoForOperator/TabContent/TabContent/TabContent.vue +146 -0
  110. package/DemoForOperator/TabContent/TabContent/TabItem.vue +368 -0
  111. package/DemoForOperator/TabContent/TabContent/TabWidget.vue +243 -0
  112. package/DemoForOperator/TabContent/TabContent/Util.js +3 -0
  113. package/DemoForOperator/TabContent/TabContent/ViewSwiper.vue +110 -0
  114. package/DemoForOperator/TabContent/testData.js +241 -0
  115. package/DemoForOperator/Vortex/App.vue +78 -0
  116. package/DemoForOperator/Vortex/Vortex/Vortex.vue +154 -0
  117. package/DemoForOperator/Vortex/Vortex/vortexIn.glsl +38 -0
  118. package/DemoForOperator/Vortex/Vortex/vortexOut.glsl +38 -0
  119. package/DemoForOperator/index.js +6 -0
  120. package/DemoForOperator/routeList.js +142 -0
  121. package/DemoHomepage/App.vue +50 -30
  122. package/DemoHomepage/components/Dialog.vue +1 -0
  123. package/DemoHomepage/components/TabFrame.vue +7 -0
  124. package/DemoHomepage/router.js +104 -81
  125. package/DemoHomepage/views/Homepage.vue +7 -6
  126. package/DivMetroPerformance/components/ContentItem.vue +0 -1
  127. package/DivMetroPerformance/data.js +3 -3
  128. package/DriftScopeTest/App.vue +1 -1
  129. package/FilterDemo/AnimatePic.vue +1 -1
  130. package/FilterDemo/VideoLayer.vue +2 -2
  131. package/FlexCellDemo/TestFrame1.vue +0 -4
  132. package/FullScreenFlex/TestFrame2.vue +1 -1
  133. package/GiftRain/App.vue +12 -15
  134. package/HashParams/App.vue +0 -1
  135. package/JsvPreDownloader/App.vue +4 -6
  136. package/Marquee/App.vue +2 -2
  137. package/MediaDemo/components/frames/AudioFrame.vue +1 -1
  138. package/MediaDemo/components/frames/VideoFrame.vue +1 -1
  139. package/MetroWidgetDemos/MassiveItems/ContentItem.vue +1 -2
  140. package/MetroWidgetDemos/MassiveItems/data.js +1 -1
  141. package/MetroWidgetDemos/PerformanceTest/components/ContentItem.vue +0 -1
  142. package/MetroWidgetDemos/PerformanceTest/components/MyTab.vue +18 -17
  143. package/MetroWidgetDemos/PerformanceTest/data.js +3 -3
  144. package/MetroWidgetDemos/RefreshDemo/assets/imageList.json +235 -235
  145. package/MetroWidgetDemos/SkeletonDiagram/assets/imageList.json +235 -235
  146. package/MetroWidgetDemos/focusableItemMetroWidget/WidgetItem.vue +3 -1
  147. package/MetroWidgetDemos/routeList.js +17 -17
  148. package/Poster3d/App.vue +69 -0
  149. package/Poster3d/Poster3d.vue +92 -0
  150. package/PosterPacker/App.vue +5 -5
  151. package/PosterPacker/tools/geniePakcer/Genie.vue +2 -2
  152. package/PosterPacker/tools/vortexPacker/Vortex.vue +15 -15
  153. package/QrcodeDemo/App.vue +1 -1
  154. package/Ripple/App.vue +1 -1
  155. package/ScaleDownNeon/App.vue +13 -10
  156. package/SceneTransition/App.vue +7 -6
  157. package/SceneTransition/maskConfig/config2.js +12 -12
  158. package/SceneTransition/maskConfig/config3.js +14 -14
  159. package/SprayView/App.vue +96 -51
  160. package/SpringFestival/App.vue +73 -0
  161. package/SpringFestival/SpringFestivalScene/ChunLian.vue +211 -0
  162. package/SpringFestival/SpringFestivalScene/FreeMoveBuilder.js +139 -0
  163. package/SpringFestival/SpringFestivalScene/LanternAnim.js +60 -0
  164. package/SpringFestival/SpringFestivalScene/Rain.vue +137 -0
  165. package/SpringFestival/SpringFestivalScene/Scene.vue +218 -0
  166. package/SpringFestival/SpringFestivalScene/imageConfig.js +87 -0
  167. package/SpringFestival/SpringFestivalScene/index.js +1 -0
  168. package/Swiper/App.vue +28 -29
  169. package/Swiper/Item.vue +19 -0
  170. package/SwiperTest/App.vue +9 -9
  171. package/TestNativeSharedView/AckEventDefine.ts +82 -0
  172. package/TestNativeSharedView/App.vue +4 -6
  173. package/TestNativeSharedView/JsvDemoTester.js +131 -0
  174. package/TextureAnimation/App3.vue +100 -0
  175. package/TextureAnimation/utils/FrameCanvasStore.ts +68 -0
  176. package/TextureAnimation/utils/RotateFrame.vue +146 -0
  177. package/TextureAnimation/utils/circleHaloMask.png +0 -0
  178. package/TextureSize/App.vue +5 -6
  179. package/TombSweepingDayTest/Raining/RainScene.vue +4 -4
  180. package/ViewOpacity/App.vue +6 -7
  181. package/package.json +1 -1
@@ -40,10 +40,12 @@ const onFocus = (rect) => {
40
40
  * 因此需要调用setEnterFocusRect来设置焦点进入区域, 以寻找最近的焦点
41
41
  */
42
42
  mwRef.value?.setEnterFocusRect(rect);
43
+ /** 重要代码: 子节点的获焦必须在往 onAction 注册的 onFocus中调用, 否则父MetroWidget不知道当前真正获焦的 item 是哪一个
44
+ */
43
45
  focusHub.setFocus(props.data.name);
44
46
  };
45
47
  const onBlur = () => {
46
- //onBlur时需要返还焦点给父MetroWidget
48
+ /** 重要代码: onBlur时需要返还焦点给父MetroWidget */
47
49
  focusHub.returnFocusToParent();
48
50
  };
49
51
 
@@ -5,95 +5,95 @@
5
5
  */
6
6
  export default [
7
7
  {
8
- name: "基础示例",
8
+ meta: { nameText: "基础示例", },
9
9
  path: "/metroWidget/basic",
10
10
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/basic/App.vue"),
11
11
  },
12
12
  {
13
- name: "direction",
13
+ meta: { nameText: "direction", },
14
14
  path: "/metroWidget/direction",
15
15
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/direction/App.vue"),
16
16
  },
17
17
  {
18
- name: "padding",
18
+ meta: { nameText: "padding", },
19
19
  path: "/metroWidget/padding",
20
20
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/padding/App.vue"),
21
21
  },
22
22
  {
23
- name: "slideSetting",
23
+ meta: { nameText: "slideSetting", },
24
24
  path: "/metroWidget/slideSetting",
25
25
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/slideSetting/App.vue"),
26
26
  },
27
27
  {
28
- name: "layoutType",
28
+ meta: { nameText: "layoutType", },
29
29
  path: "/metroWidget/layoutType",
30
30
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/layoutType/App.vue"),
31
31
  },
32
32
  {
33
- name: "嵌套(基础)",
33
+ meta: { nameText: "嵌套(基础)", },
34
34
  path: "/metroWidget/focusableItemBasic",
35
35
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/focusableItemBasic/App.vue"),
36
36
  },
37
37
  {
38
- name: "嵌套(混合)",
38
+ meta: { nameText: "嵌套(混合)", },
39
39
  path: "/metroWidget/focusableItemMix",
40
40
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/focusableItemMix/App.vue"),
41
41
  },
42
42
  {
43
- name: "嵌套(MetroWidget)",
43
+ meta: { nameText: "嵌套(MetroWidget)", },
44
44
  path: "/metroWidget/focusableItemMetroWidget",
45
45
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/focusableItemMetroWidget/App.vue"),
46
46
  },
47
47
  {
48
- name: "乒乓模式",
48
+ meta: { nameText: "乒乓模式", },
49
49
  path: "/metroWidget/PingPong",
50
50
  component: () =>
51
51
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/PingPong/App.vue"),
52
52
  },
53
53
  {
54
- name: "性能测试",
54
+ meta: { nameText: "性能测试", },
55
55
  path: "/metroWidget/PerformanceTest",
56
56
  component: () =>
57
57
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/PerformanceTest/App.vue"),
58
58
  },
59
59
  {
60
- name: "骨架图",
60
+ meta: { nameText: "骨架图", },
61
61
  path: "/metroWidget/SkeletonDiagram",
62
62
  component: () =>
63
63
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/SkeletonDiagram/App.vue"),
64
64
  },
65
65
  {
66
- name: ".9焦点页面",
66
+ meta: { nameText: ".9焦点页面", },
67
67
  path: "/metroWidget/ninePatchFocusPage",
68
68
  component: () =>
69
69
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/ninePatchFocusPage/App.vue"),
70
70
  },
71
71
  {
72
- name: "item尺寸更新",
72
+ meta: { nameText: "item尺寸更新", },
73
73
  path: "/metroWidget/itemSizeUpdate",
74
74
  component: () =>
75
75
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/itemSizeUpdate/App.vue"),
76
76
  },
77
77
  {
78
- name: "三层嵌套",
78
+ meta: { nameText: "三层嵌套", },
79
79
  path: "/metroWidget/TripleWidget",
80
80
  component: () =>
81
81
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/TripleWidget/App.vue"),
82
82
  },
83
83
  {
84
- name: "数据刷新demo",
84
+ meta: { nameText: "数据刷新demo", },
85
85
  path: "/metroWidget/RefreshDemo",
86
86
  component: () =>
87
87
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/RefreshDemo/App.vue"),
88
88
  },
89
89
  {
90
- name: "剧集翻页",
90
+ meta: { nameText: "剧集翻页", },
91
91
  path: "/metroWidget/SeamlessSlide",
92
92
  component: () =>
93
93
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/SeamlessSlide/App.vue"),
94
94
  },
95
95
  {
96
- name: "多item分段显示",
96
+ meta: { nameText: "多item分段显示", },
97
97
  path: "/metroWidget/MassiveItems",
98
98
  component: () =>
99
99
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/MassiveItems/App.vue"),
@@ -0,0 +1,69 @@
1
+ <template>
2
+ <Jsv3dStage :style="{ width: 1280, height: 720 }" :perspective="700">
3
+ <Poster3d
4
+ :position="rPosition"
5
+ :style="cStyle"
6
+ :divStyle="{ width: 400, height: 200 }"
7
+ >
8
+ <Jsv3dDiv
9
+ v-for="(item, index) in cSrcImgArray"
10
+ :style="{
11
+ width: 100,
12
+ height: 200,
13
+ left: index * 130 + 20,
14
+ backgroundImage: item,
15
+ }"
16
+ ></Jsv3dDiv>
17
+ </Poster3d>
18
+ </Jsv3dStage>
19
+ </template>
20
+
21
+ <script setup>
22
+ import { Jsv3dStage, Jsv3dDiv } from "jsview";
23
+ import { shallowReactive, onBeforeUnmount } from "vue";
24
+ import Poster3d from "./Poster3d.vue";
25
+
26
+ // 使用到的Jsview组件说明:
27
+ // Jsv3dStage用来创建透视区域,透视区域以中间为3d的消失点, perspective为透视率,默认为1000,约小透视扭曲越明显
28
+ // Jsv3dDiv为解决图片倾斜时的锯齿问题,放入Jsv3dStage的内容,如果可能发生旋转的div请全部使用Jsv3dDiv
29
+ // Jsv3dDiv比div的渲染性能略低, 所以非3d场景,不要习惯性全替换成Jsv3dDiv
30
+
31
+ // Poster3d为应用层样例组件,里面自带类似于tansition的动画功能,可以处理平移和旋转的配置
32
+
33
+ //起始位置和旋转角
34
+ const rPosition = shallowReactive({
35
+ x: 720,
36
+ y: 260,
37
+ rotateY: -30,
38
+ });
39
+ //3d组件的style
40
+ const cStyle = {
41
+ width: 400,
42
+ height: 200,
43
+ };
44
+ //插槽的图片来源数组
45
+ const cSrcImgArray = [
46
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Poster3d/App/element_228120_img_20230522225739.jpg",
47
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Poster3d/App/element_228121_img_20230522225750.jpg",
48
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Poster3d/App/element_228277_img_20230530144223.png",
49
+ ];
50
+ //定时器
51
+ let vTimer = { id: -1 };
52
+ let vTimer1 = { id: -1 };
53
+ vTimer.id = setTimeout(() => {
54
+ rPosition.x = 420;
55
+ rPosition.rotateY = 0;
56
+ }, 3000);
57
+ vTimer1.id = setTimeout(() => {
58
+ rPosition.x = 120;
59
+ rPosition.rotateY = 30;
60
+ }, 6000);
61
+ onBeforeUnmount(() => {
62
+ clearTimeout(vTimer.id);
63
+ clearTimeout(vTimer1.id);
64
+ vTimer.id = -1;
65
+ vTimer1.id = -1;
66
+ });
67
+ </script>
68
+
69
+ <style lang="scss" scoped></style>
@@ -0,0 +1,92 @@
1
+ <script setup>
2
+ /**
3
+ * @file
4
+ *
5
+ * 【模块 export 内容】
6
+ * Poster3D:3d移动动画的组件。
7
+ * props说明:
8
+ * @prop {Object} position 包含x,y,y旋转的初始配置。
9
+ * @prop {Number} animDuration 动画时间,默认1秒
10
+ * @prop {Object} style 组件的width/height
11
+ * @prop {Object} divStyle 提供给jsv3dDiv的宽高
12
+ */
13
+
14
+ import { shallowRef, watch } from "vue";
15
+ import { Jsv3dDiv, getKeyFramesGroup } from "jsview";
16
+ const props = defineProps({
17
+ position: { require: true, type: Object },
18
+ xRotate: { require: true, type: Number },
19
+ animDuration: { type: Number, default: 1 },
20
+ style: { type: Object, require: true },
21
+ divStyle: { type: Object, require: true },
22
+ });
23
+ const myPosition = {
24
+ x: props.position.x,
25
+ y: props.position.y,
26
+ rotateY: props.position?.rotateY,
27
+ };
28
+ let myAnim = shallowRef("");
29
+ const styleShell = getKeyFramesGroup();
30
+ let aniName = "";
31
+ watch(
32
+ () => props.position,
33
+ (newValue, oldValue) => {
34
+ if (newValue.rotateY !== 0) {
35
+ aniName = `@keyframes go
36
+ {
37
+ from { transform: translate3d(${-(
38
+ newValue.x - myPosition.x
39
+ )},0,0) rotate3d(0,1,0,${-newValue.rotateY}deg); }
40
+ to
41
+ { transform: translate3d(0,0,0) rotate3d(0,1,0,${0}deg); } }`;
42
+ myAnim.value = `go ${props.animDuration}s`;
43
+ } else {
44
+ aniName = `@keyframes start
45
+ {
46
+ from { transform: translate3d(${-(
47
+ newValue.x - myPosition.x
48
+ )},0,0) rotate3d(0,1,0,${myPosition.rotateY}deg); }
49
+ to
50
+ { transform: translate3d(0,0,0) rotate3d(0,1,0,${
51
+ newValue.rotateY
52
+ }deg); } }`;
53
+ myAnim.value = `start ${props.animDuration}s`;
54
+ }
55
+ styleShell.insertRule(aniName);
56
+ myPosition.x = newValue.x;
57
+ myPosition.y = newValue.y;
58
+ myPosition.rotateY = newValue?.rotateY;
59
+ },
60
+ { deep: true }
61
+ );
62
+ const myEnd = () => {
63
+ const containsGo = aniName.includes("go");
64
+ if (containsGo) {
65
+ styleShell?.removeRule("go");
66
+ } else {
67
+ styleShell?.removeRule("start");
68
+ }
69
+ myAnim.value = null;
70
+ };
71
+ </script>
72
+ <template>
73
+ <Jsv3dDiv
74
+ :style="{
75
+ width: props.style.width,
76
+ height: props.style.height,
77
+ left: props.position.x,
78
+ top: props.position.y,
79
+ transform: props.position.rotateY
80
+ ? `rotate3d(0,1,0,${props.position.rotateY}deg)`
81
+ : '',
82
+ backgroundColor: '#FF1313',
83
+ animation: myAnim,
84
+ }"
85
+ @animationend="myEnd"
86
+ >
87
+ <Jsv3dDiv :position="props.divStyle">
88
+ <slot></slot>
89
+ </Jsv3dDiv>
90
+ </Jsv3dDiv>
91
+ </template>
92
+ <style scoped></style>
@@ -14,9 +14,9 @@ import purple from "./images/purple.png";
14
14
  const ImgData = [orange, pink, red, yellowGreen, blue, darkGreen, purple];
15
15
 
16
16
  const ImageChinChilla =
17
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/BackgroundLongmao.jpg";
18
- const ImageLandscape = "https://oss.image.qcast.cn/ai-draw/landscape.jpeg";
19
- const ImageOwl = "https://oss.image.qcast.cn/ai-draw/owl.jpeg";
17
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/App/BackgroundLongmao.jpg";
18
+ const ImageLandscape = "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/App/landscape.jpeg";
19
+ const ImageOwl = "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/App/owl.jpeg";
20
20
  //旋涡子组件的引用
21
21
  const cChildRef1 = ref(null);
22
22
  //genie子组件的引用
@@ -114,11 +114,11 @@ const myEnd = () => {
114
114
  console.log("动画结束");
115
115
  };
116
116
  onMounted(() => {
117
- window.JsView?.enableFpsDisplay(true);
117
+ window.JsvCoreApi.enableFpsDisplay(true);
118
118
  });
119
119
 
120
120
  onUnmounted(() => {
121
- window.JsView?.enableFpsDisplay(false);
121
+ window.JsvCoreApi.enableFpsDisplay(false);
122
122
  });
123
123
  </script>
124
124
 
@@ -609,7 +609,7 @@ watchEffect(() => {
609
609
  console.log("rShow", rShow.value);
610
610
  });
611
611
  onMounted(() => {
612
- window.JsView?.enableFpsDisplay(true);
612
+ window.JsvCoreApi.enableFpsDisplay(true);
613
613
  });
614
614
 
615
615
  onUnmounted(() => {
@@ -618,7 +618,7 @@ onUnmounted(() => {
618
618
  vNextTickStartAnimTimer = -1;
619
619
  }
620
620
 
621
- window.JsView?.enableFpsDisplay(false);
621
+ window.JsvCoreApi.enableFpsDisplay(false);
622
622
  });
623
623
  onBeforeUnmount(() => {
624
624
  cStyleShell.removeRule("contract");
@@ -43,14 +43,14 @@ const props = defineProps({
43
43
  top: { type: Number, default: 0 },
44
44
  });
45
45
  //图片
46
- const ImagePanda = "https://oss.image.qcast.cn/ai-draw/panda.jpeg";
46
+ const ImagePanda = "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/tools/vortexPacker/Vortex/panda.jpeg";
47
47
  //0-1的x和y的坐标值(初始为x和y的中心点)
48
48
  let myX = 0.5;
49
49
  let myY = 0.5;
50
50
  let keyNum = shallowRef(0);
51
51
  //ref
52
52
  const rWidgetRef = shallowRef();
53
- let vSTRENGTH = '10.'
53
+ let vSTRENGTH = "10.";
54
54
  //替换
55
55
  let replacedShader = shallowRef(
56
56
  vortexShader
@@ -58,28 +58,28 @@ let replacedShader = shallowRef(
58
58
  .replace(/\$\{myCustomCenterY\}/g, myY)
59
59
  .replace(/\$\{STRENGTH\}/g, vSTRENGTH)
60
60
  );
61
- console.log(9998,vortexShader);
61
+ console.log(9998, vortexShader);
62
62
 
63
63
  //随机替换
64
64
  const getRandomDecimal = () => {
65
65
  myX = 0.9;
66
66
  myY = 0.1;
67
67
  //根据x轴的位置确定转数
68
- if(myX>=0.8||myX<=0.2){
69
- console.log('很小或很大');
70
- vSTRENGTH = '40.'
71
- }else if(myX>0.2<=0.4){
72
- vSTRENGTH = '30.'
73
- }else if(myX >=0.6 && myX < 0.8 ){
74
- vSTRENGTH = '30.'
75
- }else if(myX>0.4 && myX<0.6){
76
- vSTRENGTH = '10.'
68
+ if (myX >= 0.8 || myX <= 0.2) {
69
+ console.log("很小或很大");
70
+ vSTRENGTH = "40.";
71
+ } else if (myX > 0.2 <= 0.4) {
72
+ vSTRENGTH = "30.";
73
+ } else if (myX >= 0.6 && myX < 0.8) {
74
+ vSTRENGTH = "30.";
75
+ } else if (myX > 0.4 && myX < 0.6) {
76
+ vSTRENGTH = "10.";
77
77
  }
78
78
 
79
79
  replacedShader.value = vortexShader
80
80
  .replace(/\$\{myCustomCenterX\}/g, myX)
81
81
  .replace(/\$\{myCustomCenterY\}/g, myY)
82
- .replace(/\$\{STRENGTH\}/g, vSTRENGTH)
82
+ .replace(/\$\{STRENGTH\}/g, vSTRENGTH);
83
83
  keyNum.value += 1;
84
84
  };
85
85
  //接收外部设定中心点
@@ -118,11 +118,11 @@ const rShaderInfo = computed(() => {
118
118
  return cShaderSettings;
119
119
  });
120
120
  onMounted(() => {
121
- window.JsView?.enableFpsDisplay(true);
121
+ window.JsvCoreApi.enableFpsDisplay(true);
122
122
  });
123
123
 
124
124
  onUnmounted(() => {
125
- window.JsView?.enableFpsDisplay(false);
125
+ window.JsvCoreApi.enableFpsDisplay(false);
126
126
  });
127
127
  //向父组件暴露方法
128
128
  defineExpose({
@@ -13,7 +13,7 @@ const includeImage = true;
13
13
  const imageH = 64;
14
14
  const imageW = 64;
15
15
  const imageSrc =
16
- "http://oss.image.qcast.cn/homepage/20191224/0fdcdc8b258fe7baac16b73f58f8989d.jpg";
16
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/QrcodeDemo/App/0fdcdc8b258fe7baac16b73f58f8989d.jpg";
17
17
  const tipsInfo = `功能:二维码展示可配置项:
18
18
 
19
19
  1.前景色
package/Ripple/App.vue CHANGED
@@ -20,7 +20,7 @@ import img from "../assets/jpegDemo.jpeg";
20
20
  const rippleViewRef = shallowRef(null);
21
21
 
22
22
  const imgUrl =
23
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/demo_images/colorful-blocks.jpg";
23
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Ripple/App/colorful-blocks.jpg";
24
24
 
25
25
  const genSource = () => {
26
26
  return [
@@ -9,19 +9,22 @@
9
9
  import { useRouter } from "vue-router";
10
10
  const router = useRouter();
11
11
 
12
- const test1 = "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_1.jpeg)";
13
- const test2 = "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_2.jpeg)";
14
- const test3 = "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_3.jpeg)";
15
- const test4 = "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_4.jpeg)";
12
+ const test1 =
13
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_1.jpeg)";
14
+ const test2 =
15
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_2.jpeg)";
16
+ const test3 =
17
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_3.jpeg)";
18
+ const test4 =
19
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_4.jpeg)";
16
20
 
17
21
  const onKeyDown = (ev) => {
18
22
  // 8:Backspace, 27:Escape, 10000:盒子返回键
19
23
  if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
20
- if (window.JsView) {
21
- window.JsView.setGlobalConfig({
22
- texCache: -1,
23
- });
24
- }
24
+ // 关掉TextureCache(通过将waterLevel设置成-1)
25
+ window.JsvCoreApi.setRenderGlobalConfig({
26
+ texCache: -1,
27
+ });
25
28
 
26
29
  router.go(-1); // 有router时,回退
27
30
  return true;
@@ -104,4 +107,4 @@ const style2 = {
104
107
  .top250 {
105
108
  top: 250;
106
109
  }
107
- </style>
110
+ </style>
@@ -18,7 +18,9 @@
18
18
  </div>
19
19
  <!-- 文字说明 -->
20
20
  <div class="textLong" :style="{ left: 20, top: 20 }">
21
- {{ "操作说明:按【下】键进行随机碎片下落过渡效果。按【上】键进行过渡还原。" }}
21
+ {{
22
+ "操作说明:按【下】键进行随机碎片下落过渡效果。按【上】键进行过渡还原。"
23
+ }}
22
24
  </div>
23
25
  <div class="text" :style="{ left: 810, top: 20 }">{{ "素材展示" }}</div>
24
26
  <div class="text" :style="{ left: 400, top: 500 }">
@@ -72,9 +74,9 @@ import { ArraySet2 } from "./maskConfig/config2";
72
74
  import { ArraySet3 } from "./maskConfig/config3";
73
75
 
74
76
  const fly1 =
75
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/fly1.jpg";
77
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/App/fly1.jpg";
76
78
  const fly2 =
77
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/fly2.jpg";
79
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/App/fly2.jpg";
78
80
  //预加载数组
79
81
  const preload_info = [buildPreloadInfo(fly1), buildPreloadInfo(fly2)];
80
82
 
@@ -133,8 +135,7 @@ const onKeyDown = (ev) => {
133
135
  boxSwitch.value = false;
134
136
  }, 1000);
135
137
  }
136
-
137
- break;
138
+ return true;
138
139
 
139
140
  //按方向键上调用组件的恢复函数
140
141
  case 38:
@@ -142,7 +143,7 @@ const onKeyDown = (ev) => {
142
143
  control.value.fireNeEvent();
143
144
  down.value = false;
144
145
  }
145
- break;
146
+ return true;
146
147
  default:
147
148
  break;
148
149
  }
@@ -5,84 +5,84 @@ const ArraySet2 = [
5
5
  top: 0,
6
6
  width: 565,
7
7
  height: 395,
8
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/1.png",
8
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/1.png",
9
9
  },
10
10
  {
11
11
  left: 245,
12
12
  top: 0,
13
13
  width: 377,
14
14
  height: 305,
15
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/2.png",
15
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/2.png",
16
16
  },
17
17
  {
18
18
  left: 600,
19
19
  top: 0,
20
20
  width: 236,
21
21
  height: 276,
22
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/3.png",
22
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/3.png",
23
23
  },
24
24
  {
25
25
  left: 719,
26
26
  top: 0,
27
27
  width: 418,
28
28
  height: 306,
29
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/4.png",
29
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/4.png",
30
30
  },
31
31
  {
32
32
  left: 783,
33
33
  top: 0,
34
34
  width: 497,
35
35
  height: 415,
36
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/5.png",
36
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/5.png",
37
37
  },
38
38
  {
39
39
  left: 0,
40
40
  top: 366,
41
41
  width: 531,
42
42
  height: 301,
43
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/6.png",
43
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/6.png",
44
44
  },
45
45
  {
46
46
  left: 494,
47
47
  top: 217,
48
48
  width: 481,
49
49
  height: 340,
50
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/7.png",
50
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/7.png",
51
51
  },
52
52
  {
53
53
  left: 891,
54
54
  top: 332,
55
55
  width: 389,
56
56
  height: 388,
57
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/8.png",
57
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/8.png",
58
58
  },
59
59
  {
60
60
  left: 0,
61
61
  top: 429,
62
62
  width: 601,
63
63
  height: 291,
64
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/9.png",
64
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/9.png",
65
65
  },
66
66
  {
67
67
  left: 364,
68
68
  top: 510,
69
69
  width: 254,
70
70
  height: 210,
71
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/10.png",
71
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/10.png",
72
72
  },
73
73
  {
74
74
  left: 573,
75
75
  top: 447,
76
76
  width: 230,
77
77
  height: 273,
78
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/11.png",
78
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/11.png",
79
79
  },
80
80
  {
81
81
  left: 708,
82
82
  top: 453,
83
83
  width: 474,
84
84
  height: 267,
85
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/12.png",
85
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/12.png",
86
86
  },
87
87
  ];
88
88
  export { ArraySet2}