@shijiu/jsview-vue-samples 2.3.0 → 2.3.728-alpha.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 (326) hide show
  1. package/ABImageAlt/App.vue +114 -0
  2. package/ABImageAlt/Item.vue +133 -0
  3. package/{MetroWidgetDemos/SkeletonDiagram/assets/imageList.json → ABImageAlt/assets/imageList.js} +9 -1
  4. package/ABImageAlt/data.js +17 -0
  5. package/AI_Check_Rules.txt +5 -0
  6. package/AnimPicture/App.vue +20 -10
  7. package/ApicSwitch/App.vue +90 -0
  8. package/ApicSwitch/TabItem.vue +65 -0
  9. package/ApicSwitch/WebpShow.vue +24 -0
  10. package/ApicSwitch/data.js +50 -0
  11. package/Basic/AI_skills_update.md +1 -0
  12. package/Basic/components/div/ColorFormatTest.vue +93 -0
  13. package/Basic/components/div/DivRadius.vue +97 -15
  14. package/Basic/components/div/DivTag3Group.vue +30 -0
  15. package/Basic/components/img/ImageType.vue +65 -0
  16. package/Basic/components/panel/Panel2.vue +13 -1
  17. package/Basic/components/text/TextAlign.vue +7 -1
  18. package/BlobLoadTest/App.vue +201 -0
  19. package/BreakLinesApi/App.vue +82 -0
  20. package/CanvasDrawChart/App.vue +11 -0
  21. package/CanvasDrawChart/Graph1.vue +104 -0
  22. package/CanvasDrawChart/Graph2.vue +115 -0
  23. package/DashPath/App.vue +17 -16
  24. package/DashPath/AppForOperator.vue +2 -4
  25. package/DemoForOperator/AnimPic/AnimPic.vue +24 -2
  26. package/DemoForOperator/Banger/Banger/Banger.vue +73 -9
  27. package/DemoForOperator/Blur/Blur.vue +146 -0
  28. package/DemoForOperator/Blur/BlurInOut/BlurInOut.vue +184 -0
  29. package/DemoForOperator/Blur/BlurInOut/StaticBgSlide.vue +162 -0
  30. package/DemoForOperator/Blur/BlurPopup/BlurPopup.vue +249 -0
  31. package/DemoForOperator/BookFlip/App.vue +115 -0
  32. package/DemoForOperator/BookFlip/BookPage.vue +82 -0
  33. package/DemoForOperator/Bounce/Bounce.vue +33 -1
  34. package/DemoForOperator/Bounce/FreeMoveBuilder.js +1 -1
  35. package/DemoForOperator/ChunLian/Couplets.vue +44 -1
  36. package/DemoForOperator/ClickSpriteAnim/App.vue +130 -0
  37. package/DemoForOperator/ClickSpriteAnim/Item.vue +74 -0
  38. package/DemoForOperator/DominantColor/App.vue +187 -0
  39. package/DemoForOperator/EpisodeList/EpisodeList/Controller.vue +0 -3
  40. package/DemoForOperator/EpisodeList/EpisodeList/EpisodeList.vue +76 -2
  41. package/DemoForOperator/Firework1/App.vue +13 -2
  42. package/DemoForOperator/Firework1/Fireworks.vue +68 -11
  43. package/DemoForOperator/FlipPage/FlipPage/FlipPage.vue +30 -1
  44. package/DemoForOperator/Focus/Alpha/AlphaFocusBox.vue +27 -2
  45. package/DemoForOperator/Focus/Alpha/Item.vue +1 -0
  46. package/DemoForOperator/Focus/Light/Item.vue +1 -0
  47. package/DemoForOperator/Focus/Light/LightFocusBox.vue +42 -1
  48. package/DemoForOperator/Focus/Normal/Item.vue +1 -0
  49. package/DemoForOperator/Focus/Normal/NormalFocusBox.vue +12 -0
  50. package/DemoForOperator/FrameShadow/App.vue +193 -0
  51. package/DemoForOperator/FrameShadow/FrameShadow.vue +61 -0
  52. package/DemoForOperator/FullscreenIn/App.vue +1 -1
  53. package/DemoForOperator/FullscreenIn/FullscreenPoster.vue +18 -3
  54. package/DemoForOperator/Genie/App.vue +20 -6
  55. package/DemoForOperator/Genie/App2.vue +61 -0
  56. package/DemoForOperator/Genie/geniePakcer/GenieImage.vue +298 -0
  57. package/DemoForOperator/Genie/geniePakcer/GenieSlot.vue +292 -0
  58. package/DemoForOperator/Genie/geniePakcer/GenieTools.ts +463 -0
  59. package/DemoForOperator/GrayFilter/GrayFilter.vue +21 -0
  60. package/DemoForOperator/Jigsaw/JigsawFull.vue +58 -11
  61. package/DemoForOperator/Jigsaw/JigsawSingle.vue +47 -9
  62. package/DemoForOperator/LongChatBox/App.vue +36 -0
  63. package/DemoForOperator/LongChatBox/Bubble.vue +116 -0
  64. package/DemoForOperator/LongChatBox/LongChat.vue +204 -0
  65. package/DemoForOperator/LongChatBox/testData.js +14 -0
  66. package/DemoForOperator/Particle/Drop/DropParticle.vue +33 -1
  67. package/DemoForOperator/Particle/Explode/ExplodeParticle.vue +23 -2
  68. package/DemoForOperator/PosterAnim/PosterAnim.js +21 -0
  69. package/DemoForOperator/PosterOverflow/PosterOverflow.vue +16 -0
  70. package/DemoForOperator/Resize/App.vue +157 -0
  71. package/DemoForOperator/Resize/Resize/Item.vue +234 -0
  72. package/DemoForOperator/Resize/Resize/Resize.vue +96 -0
  73. package/DemoForOperator/Ripple/Ripple.vue +16 -1
  74. package/DemoForOperator/ScreenShootScale/App.vue +96 -0
  75. package/DemoForOperator/ScreenShootScale/Back.vue +86 -0
  76. package/DemoForOperator/ScreenShootScale/Front.vue +133 -0
  77. package/DemoForOperator/ScreenShootScale/Item.vue +62 -0
  78. package/DemoForOperator/ScreenShootScale/ScreenShootScale.vue +109 -0
  79. package/DemoForOperator/SmoothSwiper/App.vue +50 -0
  80. package/DemoForOperator/Sound/Bounce/App.vue +56 -0
  81. package/DemoForOperator/Sound/Bounce/Bounce.vue +87 -0
  82. package/DemoForOperator/Sound/Bounce/FreeMoveBuilder.js +146 -0
  83. package/DemoForOperator/Sound/Bounce/bgmusic.mp3 +0 -0
  84. package/DemoForOperator/Sound/Bounce/coin.mp3 +0 -0
  85. package/DemoForOperator/Sound/FocusMove/App.vue +134 -0
  86. package/DemoForOperator/Sound/FocusMove/Item.vue +43 -0
  87. package/DemoForOperator/Sound/FocusMove/move.mp3 +0 -0
  88. package/DemoForOperator/Sound/Rain/App.vue +11 -0
  89. package/DemoForOperator/Sound/Rain/Raining/Rain.vue +69 -0
  90. package/DemoForOperator/Sound/Rain/Raining/RainScene.vue +118 -0
  91. package/DemoForOperator/Sound/Sound/Sound.vue +24 -0
  92. package/DemoForOperator/Sound/Sound/index.js +4 -0
  93. package/DemoForOperator/Sound/Sound/useSound.js +112 -0
  94. package/DemoForOperator/Sprite/Sprite.vue +62 -5
  95. package/DemoForOperator/Stretch/Stretch/Stretch.vue +52 -2
  96. package/DemoForOperator/Swiper/App.vue +101 -0
  97. package/DemoForOperator/Swiper/Item.vue +56 -0
  98. package/DemoForOperator/Swiper/ParallaxSlide.vue +164 -0
  99. package/DemoForOperator/TabContent/TabContent/TabContent.vue +39 -1
  100. package/DemoForOperator/TabContentVertical/App.vue +104 -0
  101. package/DemoForOperator/TabContentVertical/ContentPage.vue +67 -0
  102. package/DemoForOperator/TabContentVertical/Item.vue +94 -0
  103. package/DemoForOperator/TabContentVertical/PageItem.vue +40 -0
  104. package/DemoForOperator/TabContentVertical/TabContent/CreepFocus.vue +160 -0
  105. package/DemoForOperator/TabContentVertical/TabContent/Item.vue +63 -0
  106. package/DemoForOperator/TabContentVertical/TabContent/TabContent.vue +184 -0
  107. package/DemoForOperator/TabContentVertical/TabContent/TabItem.vue +368 -0
  108. package/DemoForOperator/TabContentVertical/TabContent/TabWidget.vue +259 -0
  109. package/DemoForOperator/TabContentVertical/TabContent/Util.js +3 -0
  110. package/DemoForOperator/TabContentVertical/TabContent/ViewSwiper.vue +110 -0
  111. package/DemoForOperator/TabContentVertical/assets/children_science.png +0 -0
  112. package/DemoForOperator/TabContentVertical/assets/documentary.png +0 -0
  113. package/DemoForOperator/TabContentVertical/assets/free.png +0 -0
  114. package/DemoForOperator/TabContentVertical/assets/game.png +0 -0
  115. package/DemoForOperator/TabContentVertical/assets/home_selected.png +0 -0
  116. package/DemoForOperator/TabContentVertical/assets/movie_ticket.png +0 -0
  117. package/DemoForOperator/TabContentVertical/assets/my_account.png +0 -0
  118. package/DemoForOperator/TabContentVertical/assets/opera.png +0 -0
  119. package/DemoForOperator/TabContentVertical/assets/sports.png +0 -0
  120. package/DemoForOperator/TabContentVertical/assets/tv_drama.png +0 -0
  121. package/DemoForOperator/TabContentVertical/assets/variety_show.png +0 -0
  122. package/DemoForOperator/TabContentVertical/assets/vip.png +0 -0
  123. package/DemoForOperator/TabContentVertical/testData.js +76 -0
  124. package/DemoForOperator/Vortex/Vortex/Vortex.vue +26 -0
  125. package/DemoForOperator/routeList.js +125 -2
  126. package/DemoHomepage/App.vue +74 -1
  127. package/DemoHomepage/components/BodyFrame.vue +5 -0
  128. package/DemoHomepage/components/Item.vue +11 -0
  129. package/DemoHomepage/components/TabFrame.vue +1 -1
  130. package/DemoHomepage/router.js +798 -140
  131. package/DemoHomepage/views/Homepage.vue +60 -2
  132. package/DemoHomepage/watchTest.vue +50 -0
  133. package/DomRenderer/App.vue +133 -0
  134. package/FilterDemo/AnimatePic.vue +63 -17
  135. package/FilterDemo/App.vue +3 -3
  136. package/FlexCellDemo/AI_skills_update.md +4 -0
  137. package/FlexCellDemo/TestFrame1.vue +12 -2
  138. package/FlexCellDemo/TestFrame2.vue +10 -1
  139. package/FlexCellDemo/TestFrame3.vue +114 -59
  140. package/FpsLimit/App.vue +102 -0
  141. package/FreeMove/App.vue +24 -279
  142. package/FreeMove/TestScene1.vue +260 -0
  143. package/FreeMove/TestScene3.vue +431 -0
  144. package/FreeMoveChildAttract/App.vue +18 -8
  145. package/FreeMoveLink/App.vue +51 -22
  146. package/GiftRain/components/SpriteTranslate.vue +68 -48
  147. package/HashHistory/App.vue +2 -2
  148. package/HashHistory/router.js +1 -1
  149. package/Hover/App.vue +144 -0
  150. package/HttpRequestSSE/SSEReader.js +200 -0
  151. package/ImpactStop/App.vue +2 -2
  152. package/Input/FullKeyboard.vue +3 -3
  153. package/Input/InputPanel.vue +63 -3
  154. package/JsvLine/App.vue +53 -38
  155. package/LatexDemo/App.vue +3 -1
  156. package/LatexFormula/App.vue +196 -0
  157. package/LongImage/App.vue +1 -1
  158. package/LongImage/LongImageScroll.vue +111 -46
  159. package/LongImage/Scroll.vue +28 -9
  160. package/LongText/LongTextScroll.vue +14 -1
  161. package/Markdown/App.vue +36 -0
  162. package/Markdown/Bubble.vue +109 -0
  163. package/Markdown/LongChat.vue +216 -0
  164. package/Markdown/data.js +633 -0
  165. package/MetroWidgetDemos/AI_skills_update.md +2 -0
  166. package/MetroWidgetDemos/EpgFlowListType/App.vue +206 -0
  167. package/MetroWidgetDemos/EpgFlowListType/components/ContentCard.vue +105 -0
  168. package/MetroWidgetDemos/EpgFlowListType/components/FloorSection.vue +131 -0
  169. package/MetroWidgetDemos/EpgFlowListType/components/LeftTabItem.vue +41 -0
  170. package/MetroWidgetDemos/EpgFlowListType/data.js +78 -0
  171. package/MetroWidgetDemos/ListExpand/ChildItem.vue +130 -0
  172. package/MetroWidgetDemos/ListExpand/ExpandItem.vue +375 -0
  173. package/MetroWidgetDemos/ListExpand/ExpandItem1.vue +403 -0
  174. package/MetroWidgetDemos/ListExpand/assets/arrow-down.png +0 -0
  175. package/MetroWidgetDemos/ListExpand/assets/up-arrow.png +0 -0
  176. package/MetroWidgetDemos/ListExpand/components/WidgetListHandler.vue +150 -0
  177. package/MetroWidgetDemos/ListExpand/index.vue +88 -0
  178. package/MetroWidgetDemos/ListExpand/list.js +2421 -0
  179. package/MetroWidgetDemos/RefreshDemo/App.vue +14 -1
  180. package/MetroWidgetDemos/RenderAccelerate/App.vue +142 -0
  181. package/MetroWidgetDemos/RenderAccelerate/AppPage.vue +78 -0
  182. package/MetroWidgetDemos/RenderAccelerate/AppTab.vue +62 -0
  183. package/MetroWidgetDemos/RenderAccelerate/ContentItem.vue +409 -0
  184. package/MetroWidgetDemos/{TripleWidget → RenderAccelerate}/Item.vue +6 -3
  185. package/MetroWidgetDemos/RenderAccelerate/TabItem.vue +100 -0
  186. package/MetroWidgetDemos/RenderAccelerate/ViewSwiper.vue +215 -0
  187. package/MetroWidgetDemos/RenderAccelerate/WidgetItem.vue +107 -0
  188. package/MetroWidgetDemos/SkeletonDiagram/App.vue +35 -8
  189. package/MetroWidgetDemos/SkeletonDiagram/Item.vue +11 -2
  190. package/MetroWidgetDemos/SkeletonDiagram/assets/imageList.js +245 -0
  191. package/MetroWidgetDemos/SkeletonDiagram/data.js +3 -3
  192. package/MetroWidgetDemos/SpatialNav/App.vue +177 -0
  193. package/MetroWidgetDemos/SpatialNav/Buttons.vue +83 -0
  194. package/MetroWidgetDemos/SpatialNav/CustomFocus.vue +57 -0
  195. package/MetroWidgetDemos/SpatialNav/Item.vue +71 -0
  196. package/MetroWidgetDemos/SpatialNav/SimpleFloor.vue +86 -0
  197. package/MetroWidgetDemos/SpatialNav/StepMw.vue +113 -0
  198. package/MetroWidgetDemos/SpatialNav/TabContent/TabContent.vue +185 -0
  199. package/MetroWidgetDemos/SpatialNav/TripleSection/TripleSection.vue +69 -0
  200. package/MetroWidgetDemos/SpatialNav/TripleSection/WidgetItem.vue +100 -0
  201. package/MetroWidgetDemos/SpatialNav/TvSection/List.vue +75 -0
  202. package/MetroWidgetDemos/SpatialNav/TvSection/TvSection.vue +91 -0
  203. package/MetroWidgetDemos/basic2/App.vue +407 -0
  204. package/MetroWidgetDemos/basic2/Item.vue +68 -0
  205. package/MetroWidgetDemos/direction/App.vue +22 -0
  206. package/MetroWidgetDemos/gazeFocusDiff/App.vue +126 -0
  207. package/MetroWidgetDemos/gazeFocusDiff/Item.vue +87 -0
  208. package/MetroWidgetDemos/minimalUsage/App.vue +66 -0
  209. package/MetroWidgetDemos/minimalUsage/Item.vue +54 -0
  210. package/MetroWidgetDemos/ninePatchFocusPage/App.vue +23 -7
  211. package/MetroWidgetDemos/ninePatchFocusPage/Item.vue +7 -5
  212. package/MetroWidgetDemos/ninePatchFocusPage/focusConstants.js +2 -0
  213. package/MetroWidgetDemos/routeList.js +229 -8
  214. package/MetroWidgetDemos/slideSetting/App.vue +288 -99
  215. package/MetroWidgetDemos/zIndex/App.vue +117 -0
  216. package/MetroWidgetDemos/zIndex/Item.vue +61 -0
  217. package/NinePatchTester/App.vue +24 -31
  218. package/PosterPacker/App.vue +2 -2
  219. package/PreDecode/App.vue +140 -0
  220. package/ReactiveTest/App.vue +115 -0
  221. package/ReactiveTest/Item.vue +92 -0
  222. package/ReactiveTest/assets/imageList.js +245 -0
  223. package/ReactiveTest/component/TestSmartDiv.vue +50 -0
  224. package/ReactiveTest/component/TestSmartDivSrcList.vue +74 -0
  225. package/ReactiveTest/component/TestSmartImage.vue +46 -0
  226. package/ReactiveTest/component/TestSmartImageSrcList.vue +90 -0
  227. package/ReactiveTest/component/TestSmartImageStyle.vue +41 -0
  228. package/ReactiveTest/data.js +49 -0
  229. package/ScreenToBlob/App.vue +250 -0
  230. package/ScrollBoxTest/App.vue +52 -28
  231. package/ScrollBoxTest/ClipBar.vue +64 -2
  232. package/ScrollBoxTest/NinePatchBar.vue +64 -2
  233. package/ScrollBoxTest/SizeDivBar.vue +64 -2
  234. package/SecTorTest/App.vue +9 -3
  235. package/SpringFestival/SpringFestivalScene/FreeMoveBuilder.js +3 -3
  236. package/SyncDecode/App.vue +137 -0
  237. package/TextSizeLimit/App.vue +211 -0
  238. package/TextureAnimation/App3.vue +11 -1
  239. package/TouchWidget/App.vue +90 -5
  240. package/TouchWidget/WidgetItem.vue +1 -0
  241. package/TransitPage/App.vue +2 -0
  242. package/ViewOpacity/App.vue +19 -0
  243. package/assets/logo.png +0 -0
  244. package/package.json +1 -1
  245. package/DashPath/DashPath.vue +0 -118
  246. package/DemoForOperator/Genie/geniePakcer/Genie.vue +0 -699
  247. package/DemoForOperator/ScalePoster/App.vue +0 -4
  248. package/DemoForOperator/ScalePoster/ScalePoster.vue +0 -0
  249. package/DivMetroPerformance/App.vue +0 -157
  250. package/DivMetroPerformance/Item.vue +0 -58
  251. package/DivMetroPerformance/assets/bg.jpg +0 -0
  252. package/DivMetroPerformance/assets/coupon_content.png +0 -0
  253. package/DivMetroPerformance/assets/coupon_left.png +0 -0
  254. package/DivMetroPerformance/assets/coupon_mid.png +0 -0
  255. package/DivMetroPerformance/assets/coupon_right.png +0 -0
  256. package/DivMetroPerformance/assets/focus_border.png +0 -0
  257. package/DivMetroPerformance/assets/holder_logo.png +0 -0
  258. package/DivMetroPerformance/assets/jrbm.png +0 -0
  259. package/DivMetroPerformance/assets/line_left.png +0 -0
  260. package/DivMetroPerformance/assets/line_mid.png +0 -0
  261. package/DivMetroPerformance/assets/line_right.png +0 -0
  262. package/DivMetroPerformance/assets/loading.png +0 -0
  263. package/DivMetroPerformance/assets/logo.png +0 -0
  264. package/DivMetroPerformance/assets/mcjx.png +0 -0
  265. package/DivMetroPerformance/assets/tao.png +0 -0
  266. package/DivMetroPerformance/assets/tmall.png +0 -0
  267. package/DivMetroPerformance/border.png +0 -0
  268. package/DivMetroPerformance/components/ContentItem.vue +0 -384
  269. package/DivMetroPerformance/components/MyTab.vue +0 -129
  270. package/DivMetroPerformance/data.js +0 -124
  271. package/DivMetroPerformance/utils/GridItem.vue +0 -28
  272. package/DivMetroPerformance/utils/GridPlate.vue +0 -85
  273. package/MediaDemo/App.vue +0 -127
  274. package/MediaDemo/assets/audio-poster.png +0 -0
  275. package/MediaDemo/components/Button.vue +0 -69
  276. package/MediaDemo/components/Controllor.vue +0 -286
  277. package/MediaDemo/components/StatusBar.vue +0 -100
  278. package/MediaDemo/components/frames/AudioFrame.vue +0 -39
  279. package/MediaDemo/components/frames/AudioPoster.vue +0 -48
  280. package/MediaDemo/components/frames/MediaFrame.vue +0 -153
  281. package/MediaDemo/components/frames/VideoFrame.vue +0 -39
  282. package/MetroWidgetDemos/TripleWidget/App.vue +0 -81
  283. package/MetroWidgetDemos/TripleWidget/SWidgetItem.vue +0 -93
  284. package/MetroWidgetDemos/TripleWidget/WidgetItem.vue +0 -111
  285. package/Parkour/App.vue +0 -13
  286. package/Parkour/Common/Context.js +0 -21
  287. package/Parkour/Common/MatchmanInfo.js +0 -62
  288. package/Parkour/Common/Random.js +0 -61
  289. package/Parkour/Common/Sound.js +0 -50
  290. package/Parkour/appConfig/HOW_TO_CONFIG.md +0 -20
  291. package/Parkour/appConfig/app.config.mjs +0 -5
  292. package/Parkour/appConfig/app_sign_private_key_sample.crt +0 -28
  293. package/Parkour/appConfig/app_sign_public_key_sample.pem +0 -9
  294. package/Parkour/appConfig/jsview.config.mjs +0 -39
  295. package/Parkour/assets/Bgimages/bg1.png +0 -0
  296. package/Parkour/assets/Bgimages/bg2.png +0 -0
  297. package/Parkour/assets/Bgimages/bg3.png +0 -0
  298. package/Parkour/assets/Bgimages/bg4.png +0 -0
  299. package/Parkour/assets/Bgimages/bg5.png +0 -0
  300. package/Parkour/assets/audio/jump.mp3 +0 -0
  301. package/Parkour/assets/audio/lose.mp3 +0 -0
  302. package/Parkour/assets/role_skin1/fail.json +0 -44
  303. package/Parkour/assets/role_skin1/fail.png +0 -0
  304. package/Parkour/assets/role_skin1/jump_down.json +0 -20
  305. package/Parkour/assets/role_skin1/jump_down.png +0 -0
  306. package/Parkour/assets/role_skin1/jump_up.json +0 -44
  307. package/Parkour/assets/role_skin1/jump_up.png +0 -0
  308. package/Parkour/assets/role_skin1/roll.json +0 -44
  309. package/Parkour/assets/role_skin1/roll.png +0 -0
  310. package/Parkour/assets/role_skin1/run.json +0 -52
  311. package/Parkour/assets/role_skin1/run.png +0 -0
  312. package/Parkour/components/Backdrop.vue +0 -61
  313. package/Parkour/components/GameSence.vue +0 -602
  314. package/Parkour/components/Matchman.vue +0 -85
  315. package/TextureAnimation/utils/FrameCanvasStore.ts +0 -68
  316. package/TextureAnimation/utils/RotateFrame.vue +0 -146
  317. package/TextureAnimation/utils/circleHaloMask.png +0 -0
  318. package/ThrowMoveDemo/AccelerateDemo.vue +0 -85
  319. package/ThrowMoveDemo/App.vue +0 -104
  320. package/ThrowMoveDemo/LRParabolicDemo.vue +0 -101
  321. package/ThrowMoveDemo/TargetDemo.vue +0 -87
  322. package/ThrowMoveDemo/UDParabolicDemo.vue +0 -92
  323. /package/{AnimPicture/assets → assets}/animated_webp.webp +0 -0
  324. /package/{AnimPicture/assets → assets}/ball_3.webp +0 -0
  325. /package/{AnimPicture/assets → assets}/girl_run.gif +0 -0
  326. /package/{AnimPicture/assets → assets}/quan.webp +0 -0
@@ -8,385 +8,978 @@ let routeList = [
8
8
  // 功能实例
9
9
  {
10
10
  meta: { nameText: 'Home', },
11
+ name: "Home",
11
12
  path: '/',
12
13
  component: Homepage,
13
14
  meta: {
14
15
  keepAlive: true // 需要被缓存(测试Router keep alive机制)
15
16
  }
16
17
  },
18
+
19
+ // ========== feature ==========
20
+ /*
21
+ * 基础示例合集
22
+ *
23
+ * 对应的应用场景:
24
+ * div, img标签, jsview所兼容的css设置样例
25
+ * (包含通过transition和transform属性来简单实现动画的场景)
26
+ */
17
27
  {
18
28
  meta: { nameText: '基础示例合集', },
29
+ name: "feature-基础示例合集",
19
30
  path: '/feature/Basic',
20
31
  component: () => import('@shijiu/jsview-vue-samples/Basic/App.vue'),
21
32
  },
33
+
34
+ /**
35
+ * Dom文本渲染
36
+ *
37
+ * 对应场景:
38
+ * 题库后台给的数据是一段 dom 文本需要模仿浏览器显示出来
39
+ */
40
+ {
41
+ meta: { nameText: 'Dom文本渲染', },
42
+ name: "feature-Dom文本渲染",
43
+ path: '/feature/DomRenderer',
44
+ component: () => import('@shijiu/jsview-vue-samples/DomRenderer/App.vue'),
45
+ },
46
+
47
+ /*
48
+ * 截图Blob
49
+ *
50
+ * 对应的应用场景:
51
+ * 1. 对div截图后, 生成blob, 然后用div或者img标签展示此blob的图像的场景
52
+ * 2. 使用图片url来生成blob, 然后用div或者img标签展示此blob的图像的场景
53
+ */
54
+ {
55
+ meta: { nameText: '截图Blob', },
56
+ name: 'feature-截图Blob',
57
+ path: '/feature/ScreenToBlob',
58
+ component: () => import('@shijiu/jsview-vue-samples/ScreenToBlob/App.vue'),
59
+ },
60
+
22
61
  // {
23
62
  // meta: { nameText: 'FreeMoveResize', },
24
63
  // path: '/feature/FreeMoveResize',
25
64
  // component: () => import('@shijiu/jsview-vue-samples/FreeMoveResize/App.vue'),
26
65
  // },
27
- {
28
- meta: { nameText: '3d移动动画', },
29
- path: '/Operations/3dMove',
30
- component: () => import('jsview-vue-samples/Poster3d/App.vue'),
31
- },
32
- {
33
- meta: { nameText: '烟花行进特效', },
34
- path: '/Operations/SprayMove',
35
- component: () => import('jsview-vue-samples/SprayMove/App.vue'),
36
- },
37
- {
38
- meta: { nameText: '海报图收放组件', },
39
- path: '/Operations/PosterPacker',
40
- component: () => import('jsview-vue-samples/PosterPacker/App.vue'),
66
+
67
+ /*
68
+ * Blob加载测试
69
+ *
70
+ * 对应的应用场景:
71
+ * 使用XMLHttpRequest请求blob,然后使用BlobApi.createObjectURL来创建blob的URL,
72
+ * 并通过img标签展示blob的图像的场景
73
+ */
74
+ {
75
+ meta: { nameText: 'Blob加载测试', },
76
+ name: "feature-Blob加载测试",
77
+ path: '/feature/BlobLoadTest',
78
+ component: () => import('@shijiu/jsview-vue-samples/BlobLoadTest/App.vue'),
41
79
  },
80
+
81
+ /*
82
+ * div快照功能
83
+ *
84
+ * 对应的应用场景:
85
+ * 对div截图后, 用另一个div或者img标签展示截图的图像的场景
86
+ */
42
87
  {
43
88
  meta: { nameText: 'div快照功能', },
89
+ name: "feature-div快照功能",
44
90
  path: '/feature/BakeViewDemo',
45
91
  component: () => import('@shijiu/jsview-vue-samples/BakeViewDemo/App.vue'),
46
92
  },
93
+
94
+ /*
95
+ * FlexDemo
96
+ *
97
+ * 对应的应用场景:
98
+ * 使用Flex布局的场景, 注意JsvFlexDiv组件只支持一层子的flex, 多层场景要使用JsvFlexCell嵌套
99
+ */
47
100
  {
48
101
  meta: { nameText: 'FlexDemo', },
102
+ name: "feature-FlexDemo",
49
103
  path: '/feature/FlexDemo',
50
104
  component: () => import('@shijiu/jsview-vue-samples/FlexCellDemo/App.vue')
51
105
  },
106
+
107
+ /*
108
+ * ScreenFlex
109
+ *
110
+ * 对应的应用场景:
111
+ * 展示用 JsvScreenFlex 组件实现全屏范围的居中对齐, 右上角和左下角对齐的场景
112
+ * 主要解决在非16:9比例的屏幕上, 制作自适应铺满全屏的UI时如何进行对齐的场景
113
+ * PS: 普通的16:9应用上非16:9屏幕时, 建议采用背景图铺满, 内容通过JsvScreenFlex居中显示的布局
114
+ */
52
115
  {
53
116
  meta: { nameText: 'ScreenFlex', },
117
+ name: "feature-ScreenFlex",
54
118
  path: '/feature/ScreenFlex',
55
119
  component: () => import('@shijiu/jsview-vue-samples/FullScreenFlex/App.vue')
56
120
  },
121
+
122
+ /*
123
+ * 连接线Demo
124
+ *
125
+ * 对应的应用场景:
126
+ * 1. 绘制树状关系图, 脑图等图表场景中绘制连线用
127
+ * 2. 解决常规div来绘制连线时无法做到的问题,具体如下:
128
+ * Z字形连线中其中一个弯折是圆弧或者两个弯折是圆弧的场景需求
129
+ */
57
130
  {
58
131
  meta: { nameText: '连接线Demo', },
132
+ name: "feature-连接线Demo",
59
133
  path: '/feature/ConnectLine',
60
134
  component: () => import('@shijiu/jsview-vue-samples/ConnectLine/App.vue')
61
135
  },
136
+
137
+ /*
138
+ * 离散焦点自动处理
139
+ * 源码是一个测试样例, AI编程时不需要参考, 原理就是界面上有位置任意的
140
+ * 有style.width和style.height尺寸的JsvFocusBlock组件,
141
+ * 当上下左右键在这个FocusBlock的onKeyXXX或者onDispatchXXXX处理中都return了false时(表示都不拦截和处理这些导航键)
142
+ * 框架会按照这些JsvFocusBlock的布局, 自动在这些jsvFocusBlock之间进行焦点切换
143
+ *
144
+ * 对应的应用场景:
145
+ * 元素简单,且位置不重叠的游戏或运营类场景,EPG等复杂场景不适合
146
+ */
62
147
  {
63
148
  meta: { nameText: '离散焦点自动处理', },
149
+ name: "feature-离散焦点自动处理",
64
150
  path: '/feature/DispersedFocusControl',
65
151
  component: () => import('@shijiu/jsview-vue-samples/DispersedFocusControl/App.vue'),
66
152
  },
67
- {
68
- meta: { nameText: '离散焦点分布', },
69
- path: '/feature/DispersedItemSample',
70
- component: () => import('@shijiu/jsview-vue-samples/DispersedItemSample/DispersedItemSample.vue')
71
- },
153
+
154
+ // 一个简单的空间寻焦算法的样例, 已被自动寻焦样例 DispersedFocusControl 替代
155
+ // {
156
+ // meta: { nameText: '离散焦点分布', },
157
+ // name: "feature-离散焦点分布",
158
+ // path: '/feature/DispersedItemSample',
159
+ // component: () => import('@shijiu/jsview-vue-samples/DispersedItemSample/DispersedItemSample.vue')
160
+ // },
161
+
162
+ /*
163
+ * 饼图测试
164
+ *
165
+ * 对应的应用场景:
166
+ * 需要绘制图表的场景中, 需要绘制饼图的场景, 样例中还提供了调整饼图的分配比例而产生动画的效果。
167
+ * 除了支持屏图(几个扇形构成)外,还支持环形图(扇形只留扇顶弧形构成一个圆环)
168
+ * 使用时一定要注意, 传入的所有内容的合不能大于100%, 可以略小于100%, 不足100%的部分会自动补到最后一项中
169
+ */
72
170
  {
73
171
  meta: { nameText: '饼图测试', },
172
+ name: "feature-饼图测试",
74
173
  path: '/feature/SecTorTest',
75
174
  component: () => import('@shijiu/jsview-vue-samples/SecTorTest/App.vue'),
76
175
  },
176
+
177
+ /*
178
+ * TextureStore测试
179
+ *
180
+ * 对应的应用场景:
181
+ * 手搓出可用于<div>标签的style.backgroundImage或者<img>标签的src的图片资源临时url
182
+ * 但此用例只展示 JsvTextureStoreApi 的 canvasTexture 接口的用法,
183
+ * 此样例包含子场景:
184
+ * 和JsvNinePatch配合的的直角框和圆角框
185
+ * 半圆
186
+ * 纯色圆角方块
187
+ * 渐变圆角方块
188
+ */
77
189
  {
78
190
  meta: { nameText: 'TextureStore测试', },
191
+ name: "feature-TextureStore测试",
79
192
  path: '/feature/TextureStoreTest',
80
193
  component: () => import('@shijiu/jsview-vue-samples/TextureStoreTest/App.vue'),
81
194
  },
195
+
196
+ /*
197
+ * NinePatch对齐测试
198
+ *
199
+ * 对应的应用场景:
200
+ * 圆角矩形要套一个外边缘框的场景, 且框为纯色的最简解决方法。
201
+ * 使用JsvNinePatch组件, 且图片资源由代码生成(JsvTextureBuilder.buildCircleNinePatchTexture)
202
+ */
82
203
  {
83
204
  meta: { nameText: 'NinePatch对齐测试', },
205
+ name: "feature-NinePatch对齐测试",
84
206
  path: '/feature/NinePatchTester',
85
207
  component: () => import('@shijiu/jsview-vue-samples/NinePatchTester/App.vue'),
86
208
  },
209
+
210
+ /*
211
+ * NativeSharedView测试
212
+ *
213
+ * 对应的应用场景:
214
+ * 使用JsvNativeSharedDiv组件并监听其尺寸和位置变化的场景
215
+ */
87
216
  {
88
217
  meta: { nameText: 'NativeSharedView测试', },
218
+ name: "feature-NativeSharedView测试",
89
219
  path: '/feature/TestNativeSharedView',
90
220
  component: () => import('@shijiu/jsview-vue-samples/TestNativeSharedView/App.vue'),
91
221
  },
222
+
223
+ /*
224
+ * 仅测试, AI编程时, 不要参考
225
+ * CSS预处理
226
+ *
227
+ */
92
228
  {
93
229
  meta: { nameText: 'CSS预处理', },
230
+ name: "feature-CSS预处理",
94
231
  path: '/feature/CssPreprocessor',
95
232
  component: () => import('@shijiu/jsview-vue-samples/CssPreprocessor/App.vue'),
96
233
  },
234
+
235
+ /*
236
+ * 可视化变化通知
237
+ *
238
+ * 对应的应用场景:
239
+ * EPG布局, 监控视频窗口在滑动过程中是否移除屏幕时, 并在移除屏幕时进行播放停止, 移回屏幕时进行播放恢复的场景
240
+ * 以及一些放在MetroWidget中的, 需要关注由于MetroWidget滚动而导致其内容移出/移回屏幕的场景
241
+ */
97
242
  {
98
243
  meta: { nameText: '可视化变化通知', },
244
+ name: "feature-可视化变化通知",
99
245
  path: '/feature/VisibleSensorDemo',
100
246
  component: () => import('@shijiu/jsview-vue-samples/VisibleSensorDemo/App.vue'),
101
247
  },
248
+
249
+ /*
250
+ * 仅测试, AI编程时, 不要参考
251
+ * 快速刷新的表格布局组件
252
+ *
253
+ */
102
254
  {
103
255
  meta: { nameText: '快速刷新的表格布局组件', },
256
+ name: "feature-快速刷新的表格布局组件",
104
257
  path: '/feature/GridDemo',
105
258
  component: () => import('@shijiu/jsview-vue-samples/GridDemo/App.vue'),
106
259
  },
260
+
261
+ /*
262
+ * 仅测试, AI编程时, 不要参考
263
+ * 有命名空间的焦点切换
264
+ *
265
+ */
107
266
  {
108
267
  meta: { nameText: '有命名空间的焦点切换', },
268
+ name: "feature-有命名空间的焦点切换",
109
269
  path: '/feature/BasicFocusControl',
110
270
  component: () => import('@shijiu/jsview-vue-samples/BasicFocusControl/App.vue'),
111
271
  },
272
+
273
+ /*
274
+ * 仅测试, AI编程时, 不要参考
275
+ * Hash方式路由切换
276
+ *
277
+ */
112
278
  {
113
279
  meta: { nameText: 'Hash方式路由切换', },
280
+ name: "feature-Hash方式路由切换",
114
281
  path: '/feature/HashHistory',
115
282
  props: { routePath: '/feature/HashHistory' },
116
283
  component: () => import('@shijiu/jsview-vue-samples/HashHistory/App.vue'),
117
284
  },
118
- {
119
- meta: { nameText: '翻牌游戏', },
120
- path: '/Game/FlipCard',
121
- component: () => import('@shijiu/jsview-vue-samples/FlipCard/App.vue'),
122
- },
285
+
286
+ /*
287
+ * 设置颜色空间
288
+ *
289
+ // * 对应的应用场景:
290
+ * 海报资源内存使用较大, 愿意以时间换内存时, 可通过如样例那样的
291
+ * 设置data-jsv-img-color-space为RGB_565来节省内存
292
+ * 原理是JsView引擎会自动将解码出来的RGBA_8888图片存储成RGB_565的bitmap以节省一半内存
293
+ * 特别注意: 如果要用JsvPreload进行预加载时,预加载的图片和尺寸和颜色空间要和实际在img标签中设置的完全一致才能有
294
+ * 预加载的效果(预加载效果是加载完后, img标签再展示时就不会因为要一步加载图片而引起闪动的问题)
295
+ */
123
296
  {
124
297
  meta: { nameText: '设置颜色空间', },
298
+ name: "feature-设置颜色空间",
125
299
  path: '/feature/ColorSpace',
126
300
  component: () => import('@shijiu/jsview-vue-samples/ColorSpace/App.vue'),
127
301
  },
302
+
303
+ /*
304
+ * 制定Texture尺寸
305
+ *
306
+ * 对应的应用场景:
307
+ * 海报资源内存使用较大, 愿意以时间换内存时, 可通过如样例那样的
308
+ * 设置data-jsv-img-scaledown-tex为true来节省内存
309
+ * 原理是JsView只存储图片压缩尺寸后的bitmap, 而不是原始的尺寸的图片以节省内存
310
+ * 特别注意: 如果要用JsvPreload进行预加载时,预加载的图片和尺寸和颜色空间要和实际在img标签中设置的完全一致才能有
311
+ * 预加载的效果(预加载效果是加载完后, img标签再展示时就不会因为要一步加载图片而引起闪动的问题)
312
+ */
128
313
  {
129
314
  meta: { nameText: '制定Texture尺寸', },
315
+ name: "feature-制定Texture尺寸",
130
316
  path: '/feature/TextureSize',
131
317
  component: () => import('@shijiu/jsview-vue-samples/TextureSize/App.vue'),
132
318
  },
319
+
320
+ /*
321
+ * 长文字
322
+ *
323
+ * 对应的应用场景:
324
+ * 需要展示诸如用户协议,大片长端纯文本的场景
325
+ * 此样例也是 JsvScrollBox 组件的典型应用场景, 解决了一个长条形的滚动窗口如何和其右边进度条联动的场景。
326
+ * 同时 JsvScrollBox 支持触控拖动, 触控fling, 进度条点击跳转和鼠标滚动这几个场景
327
+ *
328
+ * 长内容并且右边有可点击快速定位的滚动条的场景。
329
+ * 会用两个 JsvScrollBox 来完成此场景, 一个JsvScrollBox用来展示长内容, 一个JsvScrollBox用来展示滚动条。
330
+ * 用linkName和syncWith来关联两个JsvScrollBox, 使得两个JsvScrollBox的进度保持一致。
331
+ */
133
332
  {
134
333
  meta: { nameText: '长文字', },
334
+ name: "feature-长文字",
135
335
  path: '/feature/LongText',
136
336
  component: () => import('@shijiu/jsview-vue-samples/LongText/App.vue'),
137
337
  },
338
+
339
+ /*
340
+ * 长文字Latex
341
+ *
342
+ * 对应的应用场景:
343
+ * 同 “长文字” 样例, 区别只是纯文本中可以有LaTex的写法
344
+ */
138
345
  {
139
346
  meta: { nameText: '长文字Latex', },
347
+ name: "feature-长文字Latex",
140
348
  path: '/feature/LongTextLatex',
141
349
  component: () => import('@shijiu/jsview-vue-samples/LongTextLatex/App.vue'),
142
350
  },
351
+
352
+ /*
353
+ * 二维码
354
+ *
355
+ * 对应的应用场景:
356
+ * 所以使用二维码的场景,在JsView中可以通过字符串生成二维码图片并展示
357
+ * 这个是JsvQrcode组件的典型应用场景, 主要展示了如下特性:
358
+ * 1. 字符串同步生成二维码(界面出现时不会一闪, 但是有可能会卡按键操作)
359
+ * 2. 字符串异步生成二维码(界面出现时会一闪才出, 但是不会卡按键操作)
360
+ * 3. 中心小图标绘制方案
361
+ * 4. 容错级别指定
362
+ */
143
363
  {
144
364
  meta: { nameText: '二维码', },
365
+ name: "feature-二维码",
145
366
  path: '/feature/QrcodeDemo',
146
367
  component: () => import('@shijiu/jsview-vue-samples/QrcodeDemo/App.vue'),
147
368
  },
369
+
370
+ /*
371
+ * 文字阴影
372
+ *
373
+ * 对应的应用场景:
374
+ * 适合要给文字添加阴影的场景
375
+ * 需要展示在JsView场景下所支持的所有的文字阴影的写法,
376
+ * 注意!!! 不要使用所列写法以外的CSS属性来做文字阴影
377
+ */
148
378
  {
149
379
  meta: { nameText: '文字阴影', },
380
+ name: "feature-文字阴影",
150
381
  path: '/feature/TextShadowDemo',
151
382
  component: () => import('@shijiu/jsview-vue-samples/TextShadowDemo/App.vue'),
152
383
  },
384
+
385
+ /*
386
+ * 多行文字区域内对齐
387
+ *
388
+ * 对应的应用场景:
389
+ * 适合多行纯文本内容进行区域内对齐(居中,居左,居右)的场景
390
+ * 注意!!! 遇到多行文本居中的场景, 不要用非jsview支持的css的属性来进行居中, 要用JsvTextBox组件和其属性来完成
391
+ * 此样例也是JsvTextBox组件的典型应用场景
392
+ */
153
393
  {
154
394
  meta: { nameText: '多行文字区域内对齐', },
395
+ name: "feature-多行文字区域内对齐",
155
396
  path: '/feature/TextBox',
156
397
  component: () => import('@shijiu/jsview-vue-samples/TextBox/App.vue'),
157
398
  },
158
- // TODO: 改为FreeMove后再激活
159
- // {
160
- // meta: { nameText: '抛物运动写法样例', },
161
- // path: '/Game/ThrowMoveDemo',
162
- // component: () => import('@shijiu/jsview-vue-samples/ThrowMoveDemo/App.vue'),
163
- // },
164
- {
165
- meta: { nameText: '精灵图', },
166
- path: '/Game/SpriteImage',
167
- component: () => import('@shijiu/jsview-vue-samples/SpriteImage/App.vue'),
168
- },
399
+
400
+ /*
401
+ * 文字滚动(标题跑马灯)
402
+ *
403
+ * 对应的应用场景:
404
+ * 适合需要展示标题跑马灯的场景
405
+ * 此样例也是JsvMarquee组件的典型应用场景
406
+ */
169
407
  {
170
408
  meta: { nameText: '文字滚动(标题跑马灯)', },
409
+ name: "feature-文字滚动(标题跑马灯)",
171
410
  path: '/feature/Marquee',
172
411
  component: () => import('@shijiu/jsview-vue-samples/Marquee/App.vue'),
173
412
  },
413
+
414
+ /*
415
+ * 文字输入
416
+ *
417
+ * 对应的应用场景:
418
+ * 此样例是JsvInput组件的典型应用场景
419
+ * JsvInput组件是用来和android系统的Ime进行通讯的组件
420
+ * 通常平板产品会需要通过ime进行输入,而电视产品由于ime不方便所以都不采用ime输入
421
+ */
174
422
  {
175
423
  meta: { nameText: '文字输入', },
424
+ name: "feature-文字输入",
176
425
  path: '/feature/Input',
177
426
  component: () => import('@shijiu/jsview-vue-samples/Input/App.vue'),
178
427
  },
179
- {
180
- meta: { nameText: '情景主题效果:雨', },
181
- path: '/Operations/TombSweepingDayTest',
182
- component: () => import('@shijiu/jsview-vue-samples/TombSweepingDayTest/App.vue'),
183
- },
184
- {
185
- meta: { nameText: '.9图焦点框漂移', },
186
- path: '/Operations/NinePatchDemo',
187
- component: () => import('@shijiu/jsview-vue-samples/NinePatchDemo/App.vue'),
188
- },
189
- {
190
- meta: { nameText: '动图', },
191
- path: '/Operations/AnimPicture',
192
- component: () => import('@shijiu/jsview-vue-samples/AnimPicture/App.vue'),
193
- },
194
- {
195
- meta: { nameText: '粒子效果', },
196
- path: '/Operations/SprayView',
197
- component: () => import('@shijiu/jsview-vue-samples/SprayView/App.vue'),
198
- },
199
- {
200
- meta: { nameText: '长图片', },
201
- path: '/Operations/LongImage',
202
- component: () => import('@shijiu/jsview-vue-samples/LongImage/App.vue'),
203
- },
204
- {
205
- meta: { nameText: '拼图demo', },
206
- path: '/Operations/MaskClip',
207
- component: () => import('@shijiu/jsview-vue-samples/MaskClip/App.vue'),
208
- },
209
- {
210
- meta: { nameText: 'SoundPool', },
211
- path: '/Game/SoundPool',
212
- component: () => import('@shijiu/jsview-vue-samples/SoundPool/App.vue'),
213
- },
214
- {
215
- meta: { nameText: 'TextureAnimation', },
216
- path: '/Operations/TextureAnimation',
217
- component: () => import('@shijiu/jsview-vue-samples/TextureAnimation/App.vue'),
218
- },
219
- {
220
- meta: { nameText: '焦点框旋转光效果', },
221
- path: '/Operations/TextureAnimation2',
222
- component: () => import('@shijiu/jsview-vue-samples/TextureAnimation/App3.vue'),
223
- },
224
- {
225
- meta: { nameText: '公祭日黑白效果', },
226
- path: '/Operations/GrayDown',
227
- component: () => import('@shijiu/jsview-vue-samples/FilterDemo/App.vue'),
228
- },
229
- {
230
- meta: { nameText: '水波特效', },
231
- path: '/Operations/Ripple',
232
- component: () => import('@shijiu/jsview-vue-samples/Ripple/App.vue'),
233
- },
428
+
429
+ /*
430
+ * 预加载
431
+ *
432
+ * 对应的应用场景:
433
+ * 用于解决由于图片异步加载导致图片切换时闪动问题
434
+ * 此样例是JsvPreload组件的典型应用场景
435
+ * 原理是: 通过JsvPreload组件将目标图片的bitmap加载到内存,
436
+ * 并通过JsvPreload这个vue组件的生命周期来管理这个内存中的bitmap的生命周期(两者生命周期相同)
437
+ * 注意点:
438
+ * 1. 对于展示时会设置 data-jsv-img-scaledown-tex 和 data-jsv-img-color-space 的场景
439
+ * 要在JsvPreload的图片项目配置中也设置相同的配置(参照JsvPreload组件设置属性的接口, 和img标签的这两个属性并不完全同名)
440
+ * 2. 预加载内存消耗较大, 内存按照bitmap来计算 = width * height * 4 bytes
441
+ * 建议JsvPreload的总内存不要超过10M(1920x1080的背景图不要超过3张)
442
+ */
234
443
  {
235
444
  meta: { nameText: '预加载', },
445
+ name: "feature-预加载",
236
446
  path: '/feature/Preload',
237
447
  component: () => import('@shijiu/jsview-vue-samples/Preload/App.vue'),
238
448
  },
449
+
450
+ /*
451
+ * AB图片切换
452
+ *
453
+ * 对应的应用场景:
454
+ * 此样例是JsvABImage组件的典型应用场景
455
+ * JsvABImage是用来解决按钮等AB图, 焦点和非焦点是两张不同的图片, 切换时不要有闪烁(未加载完成前不要切换)的问题
456
+ * 原理: JsvABImage组件借助JsvSmartImage组件实现了AB图片切换的功能, 主要原理是A切换到B时, B加载完成后才会进行切换
457
+ * 此方案的AB图可以支持A图为jpg, png这种静态图, 而B图位webp或者gif的这种场景
458
+ * 比用JsvPreload将所有B图都缓存起来的解决方案更省内存
459
+ */
460
+ {
461
+ meta: { nameText: 'AB图片切换', },
462
+ name: "feature-AB图片切换",
463
+ path: '/feature/ABImageAlt',
464
+ component: () => import('@shijiu/jsview-vue-samples/ABImageAlt/App.vue'),
465
+ },
466
+
467
+ /*
468
+ * 仅测试, AI编程时, 不要参考
469
+ * 图片组件响应式测试
470
+ *
471
+ * JsvPosterDiv和JsvPosterImage组件图片内容变化的测试用例
472
+ * (也是JsvSmartDiv和JsvSmartImage组件的典型测试用例)
473
+ */
474
+ {
475
+ meta: { nameText: '图片组件响应式测试', },
476
+ name: "feature-图片组件响应式测试",
477
+ path: '/feature/ReactiveTest',
478
+ component: () => import('@shijiu/jsview-vue-samples/ReactiveTest/App.vue'),
479
+ },
480
+
481
+ /*
482
+ * 仅测试, AI编程时, 不要参考
483
+ * 单图片透明
484
+ *
485
+ * img标签单设opacity属性来实现图片透明效果的测试用例
486
+ * 注意: div标签不支持设置opacity
487
+ */
239
488
  {
240
489
  meta: { nameText: '单图片透明', },
490
+ name: "feature-单图片透明",
241
491
  path: '/feature/ViewOpacity',
242
492
  component: () => import('@shijiu/jsview-vue-samples/ViewOpacity/App.vue'),
243
493
  },
494
+
495
+ /*
496
+ * 仅测试, AI编程时, 不要参考
497
+ * 图片缩小算法
498
+ *
499
+ * 测试img标签单设data-jsv-img-scaledown-tex属性来实现图片缩小场景下, 执行的性能和效果
500
+ */
244
501
  {
245
502
  meta: { nameText: '图片缩小算法', },
503
+ name: "feature-图片缩小算法",
246
504
  path: '/feature/ScaleDownNeon',
247
505
  component: () => import('@shijiu/jsview-vue-samples/ScaleDownNeon/App.vue'),
248
506
  },
507
+
508
+ /*
509
+ * 渐变Texture
510
+ *
511
+ * 对应的应用场景:
512
+ * 用于要展示渐变色背景图的场景, 支持垂直, 水平, 对角, 多色渐变
513
+ */
249
514
  {
250
515
  meta: { nameText: '渐变Texture', },
516
+ name: "feature-渐变Texture",
251
517
  path: '/feature/GradientTexture',
252
518
  component: () => import('@shijiu/jsview-vue-samples/GradientTexture/App.vue'),
253
519
  },
254
- {
255
- meta: { nameText: '碰撞检测', },
256
- path: '/Game/Collision',
257
- component: () => import('@shijiu/jsview-vue-samples/Collision/App.vue'),
258
- },
259
- {
260
- meta: { nameText: '碰撞即停', },
261
- path: '/Game/ImpactStop',
262
- component: () => import('@shijiu/jsview-vue-samples/ImpactStop/App.vue'),
263
- },
264
- {
265
- meta: { nameText: '滚动图', },
266
- path: '/Operations/Swiper',
267
- component: () => import('@shijiu/jsview-vue-samples/Swiper/App.vue'),
268
- },
520
+
521
+ /*
522
+ * 下载接口示例
523
+ *
524
+ * 对应的应用场景:
525
+ * JsvPreDownloader的典型应用场景
526
+ * 解决要对图片进行预下载的场景, 以优化图片的加载性能
527
+ * 但不宜过多,因为存储限制,预下载太多的图片会被先进新出的缓存逻辑顶掉, 而达不到图片加载的优化效果
528
+ */
269
529
  {
270
530
  meta: { nameText: '下载接口示例', },
531
+ name: "feature-下载接口示例",
271
532
  path: '/feature/JsvPreDownloader',
272
533
  component: () => import('@shijiu/jsview-vue-samples/JsvPreDownloader/App.vue'),
273
534
  },
274
- {
275
- meta: { nameText: '焦点移动样式', },
276
- path: '/Operations/FocusMoveStyle',
277
- component: () => import('@shijiu/jsview-vue-samples/FocusMoveStyle/App.vue'),
278
- },
535
+
536
+ /*
537
+ * 仅测试, AI编程时, 不要参考
538
+ * Mockjs测试
539
+ *
540
+ * 测试Mockjs的测试用例
541
+ */
279
542
  {
280
543
  meta: { nameText: 'Mockjs测试', },
544
+ name: "feature-Mockjs测试",
281
545
  path: '/feature/MockjsDemo',
282
546
  component: () => import('@shijiu/jsview-vue-samples/MockjsDemo/App.vue'),
283
547
  },
284
- {
285
- meta: { nameText: '红包雨', },
286
- path: '/Game/GiftRain',
287
- component: () => import('@shijiu/jsview-vue-samples/GiftRain/App.vue'),
288
- },
289
- {
290
- meta: { nameText: '雷达图', },
291
- path: '/Game/RadarChart',
292
- component: () => import('@shijiu/jsview-vue-samples/JsvRadarChart/App.vue')
293
- },
294
- // TODO: 等改为对接FreeMoveActor后再恢复
295
- // {
296
- // meta: { nameText: '跑酷游戏', },
297
- // path: '/Game/Parkour',
298
- // component: () => import('@shijiu/jsview-vue-samples/Parkour/App.vue')
299
- // },
548
+
549
+ /*
550
+ * Hash参数
551
+ *
552
+ * 对应的应用场景:
553
+ * 一个读取URL的deepLink中信息的样例
554
+ * 对应场景有,
555
+ * 1. 读取 window.locaiton.search的内容
556
+ * 2. 从vue-router读取参数
557
+ */
300
558
  {
301
559
  meta: { nameText: 'Hash参数', },
560
+ name: "feature-Hash参数",
302
561
  path: '/feature/HashParams',
303
562
  component: () => import('@shijiu/jsview-vue-samples/HashParams/App.vue'),
304
563
  },
564
+
565
+ /*
566
+ * 仅测试, AI编程时, 不要参考
567
+ * 按键打断描画
568
+ *
569
+ * JsvRenderBreak组件测试, 此组件可以将废弃, 不建议应用层直接使用
570
+ */
305
571
  {
306
572
  meta: { nameText: '按键打断描画', },
573
+ name: "feature-按键打断描画",
307
574
  path: '/feature/BreakRender',
308
575
  component: () => import('@shijiu/jsview-vue-samples/BreakRender/App.vue'),
309
576
  },
577
+
578
+ /*
579
+ * latex示例
580
+ *
581
+ * 对应的应用场景:
582
+ * 使用于<div>标签中的文字需要展示
583
+ * 1. 文本中间部分文字变色的场景
584
+ * 2. 文本中间部分文字加粗的场景
585
+ * 3. 文本中间部分文字斜体的场景
586
+ * 4. 文本中间部分文字下划线的场景
587
+ * 5. 文本中间部分文字删除线的场景
588
+ * 原理: 用LaTex的语法来解决原本需要JsView不支持的css的属性才能实现的以上文字效果
589
+ */
310
590
  {
311
591
  meta: { nameText: 'latex示例', },
592
+ name: "feature-latex示例",
312
593
  path: '/feature/LatexDemo',
313
594
  component: () => import('@shijiu/jsview-vue-samples/LatexDemo/App.vue'),
314
595
  },
596
+
597
+ /*
598
+ * GetRect示例
599
+ *
600
+ * 对应的应用场景:
601
+ * 想知道一个div相对于屏幕左上角的实际绘制位置的场景(包括transform或者keyframe动画等变化引起的位置和尺寸变化)。
602
+ * 只能异步获取位置信息
603
+ * div元素扩展接口jsvGetBoundingClientRect的经典使用场景
604
+ *
605
+ * 和下面网站呼应
606
+ * https://jsview-dev.shijiutv.com/guide/4.standard-features/4.2.html5-elements.html#element%E6%96%B9%E6%B3%95
607
+ */
315
608
  {
316
609
  meta: { nameText: 'GetRect示例', },
610
+ name: "feature-GetRect示例",
317
611
  path: '/feature/GetRect',
318
612
  component: () => import('@shijiu/jsview-vue-samples/GetBoundingClientRect/App.vue'),
319
613
  },
614
+
615
+ /*
616
+ * 仅测试, AI编程时, 不要参考
617
+ * 动态Class示例
618
+ *
619
+ */
320
620
  {
321
621
  meta: { nameText: '动态Class示例', },
622
+ name: "feature-动态Class示例",
322
623
  path: '/feature/DynamicClass',
323
624
  component: () => import('@shijiu/jsview-vue-samples/DynamicClass/App.vue'),
324
625
  },
626
+
627
+ /*
628
+ * 仅测试, AI编程时, 不要参考
629
+ * Class动态切换示例
630
+ *
631
+ */
325
632
  {
326
633
  meta: { nameText: 'Class动态切换示例', },
634
+ name: "feature-Class动态切换示例",
327
635
  path: '/feature/ClassDynamicSwitching',
328
636
  component: () => import('@shijiu/jsview-vue-samples/ClassDynamicSwitching/App.vue'),
329
637
  },
638
+
639
+ /*
640
+ * JsvLine示例
641
+ *
642
+ * 对应的应用场景:
643
+ * 绘制一条斜线无锯齿的线, 比用div + backgroundColor 来说, 其优势在于斜线时没有锯齿
644
+ */
330
645
  {
331
646
  meta: { nameText: 'JsvLine示例', },
647
+ name: "feature-JsvLine示例",
332
648
  path: '/feature/JsvLine',
333
649
  component: () => import('@shijiu/jsview-vue-samples/JsvLine/App.vue'),
334
650
  },
335
- // {
336
- // meta: { nameText: 'FreeMove示例', },
337
- // path: '/feature/FreeMove',
338
- // component: () => import('@shijiu/jsview-vue-samples/FreeMove/App.vue'),
339
- // },
651
+
652
+ /*
653
+ *
654
+ * 仅测试, AI编程时, 不要参考
655
+ * FreeMove示例
656
+ *
657
+ */
658
+ {
659
+ meta: { nameText: 'FreeMove示例', },
660
+ path: '/feature/FreeMove',
661
+ component: () => import('@shijiu/jsview-vue-samples/FreeMove/App.vue'),
662
+ },
663
+
664
+ /*
665
+ * 思维导图示例
666
+ *
667
+ * 对应的应用场景:
668
+ * 需要绘制树状结构图或者脑图的场景,
669
+ * 此样例是JsvMindMap组件的典型应用场景
670
+ * 解决了这类图像的在遥控器的只有上下左右键场景下的操作问题。
671
+ * JsvMindMap也是一个内嵌了JsvFocusBlok的组件, 可通过FocusHub.setFocus来设置焦点
672
+ */
340
673
  {
341
674
  meta: { nameText: '思维导图示例', },
675
+ name: "feature-思维导图示例",
342
676
  path: '/feature/MindMap',
343
677
  component: () => import('@shijiu/jsview-vue-samples/MindMap/App.vue'),
344
678
  },
679
+
680
+ /*
681
+ * 仅测试, AI编程时, 不要参考
682
+ * latex公式
683
+ *
684
+ */
345
685
  {
346
686
  meta: { nameText: 'latex公式', },
687
+ name: "feature-latex公式",
347
688
  path: '/feature/LatexFormula',
348
689
  component: () => import('@shijiu/jsview-vue-samples/LatexFormula/App.vue'),
349
690
  },
691
+
692
+ /*
693
+ * 文字大小限制
694
+ *
695
+ * 对应的应用场景:
696
+ * 用于解决文字内容多少不确定, 但是又要占用一定的尺寸的场景。
697
+ * 用JsvTextBox组件的minWidth、maxWidth、minHeight、maxHeight配置,
698
+ * 来解决没法用JsView不识别的css中的同名属性(minWidth、maxWidth、minHeight、maxHeight)来解决文字排版场景
699
+ */
700
+ {
701
+ meta: { nameText: '文字大小限制', },
702
+ name: 'feature-文字大小限制',
703
+ path: '/feature/TextSizeLimit',
704
+ component: () => import('@shijiu/jsview-vue-samples/TextSizeLimit/App.vue'),
705
+ },
706
+
707
+ /*
708
+ * 分行API
709
+ *
710
+ * 对应的应用场景:
711
+ * TextTools.breakLines的使用样例
712
+ * 对应场景为需要对文字的行数进行探测, 以及要对每行文字有后处理的场景
713
+ */
714
+ {
715
+ meta: { nameText: '分行API', },
716
+ name: 'feature-分行API',
717
+ path: '/feature/BreakLines',
718
+ component: () => import('@shijiu/jsview-vue-samples/BreakLinesApi/App.vue')
719
+ },
720
+
721
+ /*
722
+ * 同步解码
723
+ *
724
+ * 对应的应用场景:
725
+ * 用于解决默认的图片解码为异步和其他内容不同时出现的问题
726
+ * 具体处理为 JsvPosterImage 组件将 syncDraw 属性设置为 true
727
+ * 其逻辑为:
728
+ * 1. 若图片已经下载过, 则会堵住渲染线程,等到解码完后后和其他内容一起绘制,
729
+ * 所以图片最好用JsvPreDownloader来完成下载, 或者用JsvPreload的downloadList属性来完成下载
730
+ * 2. 若图片未下载过, 则仍然会异步下载, 异步解码, 相当于同步解码这个开关不生效
731
+ */
732
+ {
733
+ meta: { nameText: '同步解码', },
734
+ name: 'feature-同步解码',
735
+ path: '/feature/SyncDecode',
736
+ component: () => import('@shijiu/jsview-vue-samples/SyncDecode/App.vue')
737
+ },
738
+
739
+ /*
740
+ * 仅测试, AI编程时, 不要参考
741
+ * 预解码
742
+ *
743
+ * 后续预解码功能做完后, 再确认是否可用于AI编程参考
744
+ */
745
+ {
746
+ meta: { nameText: '预解码', },
747
+ name: 'feature-预解码',
748
+ path: '/feature/PreDecode',
749
+ component: () => import('@shijiu/jsview-vue-samples/PreDecode/App.vue')
750
+ },
751
+
752
+ /*
753
+ * 帧率限制
754
+ *
755
+ * 对应的应用场景:
756
+ * 为了解决在一些设备上长时间保持高帧率绘制会导致设备高功率运转太久会过热的问题
757
+ * 通过例如 window.JsvCoreApi.setIdleFps(true, 5, 5000) 这样的设置
758
+ * 让设备在无用户操作(按键和触控等操作)5000毫秒后, 帧率降到5fps, 当用户有操作时又会立刻回复到原来的帧率, 如此循环
759
+ */
760
+ {
761
+ meta: { nameText: '帧率限制', },
762
+ name: 'feature-帧率限制',
763
+ path: '/feature/FpsLimit',
764
+ component: () => import('@shijiu/jsview-vue-samples/FpsLimit/App.vue')
765
+ },
766
+
767
+ // ========== operation ==========
768
+ /*
769
+ * 3d移动动画
770
+ *
771
+ * 对应的应用场景:
772
+ * 想让一个区域内的内容进行rotate或者设置z轴后, 有近大远小的透视效果的场景
773
+ * Jsv3dStage组件的典型应用场景, 在一个指定区域内设置透视, 然后在其中的div的transform引起有z轴区别时有透视效果
774
+ * Jsv3dDiv和div相比, Jsv3dDiv图片会把边缘进行过渡处理从而消除锯齿感, 并且Jsv3dDiv可设置z轴值, 而div当倾斜时会有锯齿
775
+ */
776
+ {
777
+ meta: { nameText: '3d移动动画', },
778
+ name: "Operations-3d移动动画",
779
+ path: '/Operations/3dMove',
780
+ component: () => import('jsview-vue-samples/Poster3d/App.vue'),
781
+ },
782
+
783
+
784
+ {
785
+ meta: { nameText: '烟花行进特效', },
786
+ name: "Operations-烟花行进特效",
787
+ path: '/Operations/SprayMove',
788
+ component: () => import('jsview-vue-samples/SprayMove/App.vue'),
789
+ },
790
+ {
791
+ meta: { nameText: '海报图收放组件', },
792
+ name: "Operations-海报图收放组件",
793
+ path: '/Operations/PosterPacker',
794
+ component: () => import('jsview-vue-samples/PosterPacker/App.vue'),
795
+ },
796
+ {
797
+ meta: { nameText: '情景主题效果:雨', },
798
+ name: "Operations-情景主题效果:雨",
799
+ path: '/Operations/TombSweepingDayTest',
800
+ component: () => import('@shijiu/jsview-vue-samples/TombSweepingDayTest/App.vue'),
801
+ },
802
+ {
803
+ meta: { nameText: '.9图焦点框漂移', },
804
+ name: "Operations-.9图焦点框漂移",
805
+ path: '/Operations/NinePatchDemo',
806
+ component: () => import('@shijiu/jsview-vue-samples/NinePatchDemo/App.vue'),
807
+ },
808
+ {
809
+ meta: { nameText: '动图', },
810
+ name: "Operations-动图",
811
+ path: '/Operations/AnimPicture',
812
+ component: () => import('@shijiu/jsview-vue-samples/AnimPicture/App.vue'),
813
+ },
814
+ {
815
+ meta: { nameText: '动静图标切换', },
816
+ name: "Operations-动静图标切换",
817
+ path: '/Operations/ApicSwitch',
818
+ component: () => import('@shijiu/jsview-vue-samples/ApicSwitch/App.vue'),
819
+ },
820
+ {
821
+ meta: { nameText: '粒子效果', },
822
+ name: "Operations-粒子效果",
823
+ path: '/Operations/SprayView',
824
+ component: () => import('@shijiu/jsview-vue-samples/SprayView/App.vue'),
825
+ },
826
+ {
827
+ meta: { nameText: '长图片', },
828
+ name: "Operations-长图片",
829
+ path: '/Operations/LongImage',
830
+ component: () => import('@shijiu/jsview-vue-samples/LongImage/App.vue'),
831
+ },
832
+ {
833
+ meta: { nameText: '拼图demo', },
834
+ name: "Operations-拼图demo",
835
+ path: '/Operations/MaskClip',
836
+ component: () => import('@shijiu/jsview-vue-samples/MaskClip/App.vue'),
837
+ },
838
+ {
839
+ meta: { nameText: 'TextureAnimation', },
840
+ name: "Operations-TextureAnimation",
841
+ path: '/Operations/TextureAnimation',
842
+ component: () => import('@shijiu/jsview-vue-samples/TextureAnimation/App.vue'),
843
+ },
844
+ {
845
+ meta: { nameText: '焦点框旋转光效果', },
846
+ name: "Operations-焦点框旋转光效果",
847
+ path: '/Operations/TextureAnimation2',
848
+ component: () => import('@shijiu/jsview-vue-samples/TextureAnimation/App3.vue'),
849
+ },
850
+ {
851
+ meta: { nameText: '公祭日黑白效果', },
852
+ name: "Operations-公祭日黑白效果",
853
+ path: '/Operations/GrayDown',
854
+ component: () => import('@shijiu/jsview-vue-samples/FilterDemo/App.vue'),
855
+ },
856
+ {
857
+ meta: { nameText: '水波特效', },
858
+ name: "Operations-水波特效",
859
+ path: '/Operations/Ripple',
860
+ component: () => import('@shijiu/jsview-vue-samples/Ripple/App.vue'),
861
+ },
862
+ {
863
+ meta: { nameText: '滚动图', },
864
+ name: "Operations-滚动图",
865
+ path: '/Operations/Swiper',
866
+ component: () => import('@shijiu/jsview-vue-samples/Swiper/App.vue'),
867
+ },
868
+ {
869
+ meta: { nameText: '焦点移动样式', },
870
+ name: "Operations-焦点移动样式",
871
+ path: '/Operations/FocusMoveStyle',
872
+ component: () => import('@shijiu/jsview-vue-samples/FocusMoveStyle/App.vue'),
873
+ },
350
874
  {
351
875
  meta: { nameText: 'Swiper3dTest', },
876
+ name: "Operations-Swiper3dTest",
352
877
  path: '/Operations/Swiper3D',
353
878
  component: () => import('@shijiu/jsview-vue-samples/SwiperTest/App.vue'),
354
879
  },
355
880
  {
356
881
  meta: { nameText: '进度条', },
882
+ name: "Operations-进度条",
357
883
  path: '/Operations/ProgressBar',
358
884
  component: () => import('@shijiu/jsview-vue-samples/ProgressBar/App.vue'),
359
885
  },
360
886
  {
361
887
  meta: { nameText: '春联测试', },
888
+ name: "Operations-春联测试",
362
889
  path: '/Operations/CoupletsTest',
363
890
  component: () => import('@shijiu/jsview-vue-samples/CoupletsTest/App.vue'),
364
891
  },
365
892
  {
366
893
  meta: { nameText: '全屏春联特效', },
894
+ name: "Operations-全屏春联特效",
367
895
  path: '/Operations/SpringFestival2025',
368
896
  component: () => import('jsview-vue-samples/SpringFestival/App.vue'),
369
897
  },
370
898
  {
371
899
  meta: { nameText: '场景过渡', },
900
+ name: "Operations-场景过渡",
372
901
  path: '/Operations/SceneTransition',
373
902
  component: () => import('@shijiu/jsview-vue-samples/SceneTransition/App.vue'),
374
903
  },
904
+ {
905
+ meta: { nameText: '自定义shader', },
906
+ name: "Operations-自定义shader",
907
+ path: '/Operations/CustomShader',
908
+ component: () => import('@shijiu/jsview-vue-samples/CustomShader/App.vue'),
909
+ },
910
+ {
911
+ meta: { nameText: '虚线框测试用例', },
912
+ name: "Operations-虚线框测试用例",
913
+ path: '/Operations/DashPath',
914
+ component: () => import('@shijiu/jsview-vue-samples/DashPath/App.vue'),
915
+ },
916
+ // {
917
+ // meta: { nameText: '透视镜效果样例', },
918
+ // path: '/Operations/DriftScopeTest',
919
+ // component: () => import('@shijiu/jsview-vue-samples/DriftScopeTest/App.vue'),
920
+ // },
921
+ {
922
+ meta: { nameText: '二维统计图样例', },
923
+ name: 'Operations-二维统计图样例',
924
+ path: '/Operations/DataChart',
925
+ component: () => import('@shijiu/jsview-vue-samples/CanvasDrawChart/App.vue')
926
+ },
927
+ {
928
+ meta: { nameText: 'MD+LaTex', },
929
+ name: 'Operations-Markdown',
930
+ path: '/Operations/Markdown',
931
+ component: () => import('@shijiu/jsview-vue-samples/Markdown/App.vue')
932
+ },
933
+
934
+ // ========== touch ==========
935
+ /*
936
+ * 点击Div
937
+ *
938
+ * 对应的应用场景:
939
+ * 单个div标签追加触控功能的场景
940
+ * 只响应点击的话,@click即可, 需要更多触控功能的话,需要div.jsvSetTapListener来设置
941
+ * jsvSetTapListener的经典使用场景
942
+ * 和下面网站呼应
943
+ * https://jsview-dev.shijiutv.com/guide/4.standard-features/4.8.touch-usage.html#%E8%A7%A6%E6%8E%A7%E5%8A%9F%E8%83%BD
944
+ */
375
945
  {
376
946
  meta: { nameText: '点击Div', },
947
+ name: "touch-点击Div",
377
948
  path: '/touch/ClickDivDemo',
378
949
  component: () => import('@shijiu/jsview-vue-samples/ClickDivDemo/App.vue'),
379
950
  },
951
+
952
+ /*
953
+ * 触控示例
954
+ *
955
+ * 对应的应用场景:
956
+ * 让MetroWidget激活触控功能,以及如何接受触控事件的场景
957
+ * 以及想用一个蒙层屏蔽MetroWidget的所有触控事件和鼠标事件的场景
958
+ *
959
+ * 和下面网站呼应
960
+ * https://jsview-dev.shijiutv.com/guide/4.standard-features/4.8.touch-usage.html#%E8%A7%A6%E6%8E%A7%E5%8A%9F%E8%83%BD
961
+ */
380
962
  {
381
963
  meta: { nameText: '触控示例', },
964
+ name: "touch-触控示例",
382
965
  path: '/touch/TouchWidget',
383
966
  component: () => import('@shijiu/jsview-vue-samples/TouchWidget/App.vue'),
384
967
  },
968
+
969
+ /*
970
+ * DragBox
971
+ *
972
+ * 对应的应用场景:
973
+ * 场景1: 当一个div想监测触控的拖动轨迹的场景, 将此div改为JsvDragBox组件来实现
974
+ * 场景2: 想监测用户在屏幕中滑动的手势轨迹时, 做最上层做一个全屏尺寸JsvDragBox, 通过其位置回调就能监测用户对屏幕的滑动事件
975
+ */
385
976
  {
386
977
  meta: { nameText: 'DragBox', },
978
+ name: "touch-DragBox",
387
979
  path: '/touch/Box',
388
980
  component: () => import('@shijiu/jsview-vue-samples/DragBox/App.vue'),
389
981
  },
982
+
390
983
  // {
391
984
  // meta: { nameText: 'FreeMove触控磁吸', },
392
985
  // path: '/touch/FreeMoveChildAttract',
@@ -397,25 +990,90 @@ let routeList = [
397
990
  // path: '/touch/FreeMoveLink',
398
991
  // component: () => import('@shijiu/jsview-vue-samples/FreeMoveLink/App.vue'),
399
992
  // },
993
+
994
+ /*
995
+ * 可拖拽进度条
996
+ *
997
+ * 对应的应用场景:
998
+ * 要制作可触控操作的视频进度条的场景
999
+ *
1000
+ * JsvScrollBox和JsvScrollFollow组件的典型应用场景, 展示JsvScrollFollow和JsvScrollBox如何靠linkName联动起来的场景
1001
+ * 因为是进度条游标在滚动区域中滑动,所以用JsvScrollBox的Pin模式
1002
+ *
1003
+ * 和下面网站呼应
1004
+ * https://jsview-dev.shijiutv.com/guide/4.standard-features/4.8.touch-usage.html#_5-%E8%BF%9B%E5%BA%A6%E6%9D%A1%E6%8B%96%E5%8A%A8-%E8%A7%86%E9%A2%91%E8%BF%9B%E5%BA%A6%E6%9D%A1
1005
+ */
400
1006
  {
401
1007
  meta: { nameText: '可拖拽进度条', },
1008
+ name: "touch-可拖拽进度条",
402
1009
  path: '/touch/ScrollBoxTest',
403
1010
  component: () => import('@shijiu/jsview-vue-samples/ScrollBoxTest/App.vue'),
404
1011
  },
1012
+
1013
+ /*
1014
+ * Hover
1015
+ *
1016
+ * 对应的应用场景:
1017
+ * 当一个div要对鼠标的hover事件做响应的场景, 只支持 @mouseenter 和 @mouseleave 事件, 不支持其他hover相关的事件定义
1018
+ *
1019
+ * 和以下网站呼应
1020
+ * https://jsview-dev.shijiutv.com/guide/4.standard-features/4.8.touch-usage.html#_7-%E9%BC%A0%E6%A0%87%E7%9A%84hover%E8%BF%9B%E5%87%BA%E6%A3%80%E6%B5%8B
1021
+ */
1022
+ {
1023
+ meta: { nameText: 'Hover', },
1024
+ name: 'touch-Hover',
1025
+ path: '/touch/Hover',
1026
+ component: () => import('@shijiu/jsview-vue-samples/Hover/App.vue')
1027
+ },
1028
+
1029
+ // ========== game ==========
1030
+ // TODO: 改为FreeMove后再激活
405
1031
  // {
406
- // meta: { nameText: '透视镜效果样例', },
407
- // path: '/Operations/DriftScopeTest',
408
- // component: () => import('@shijiu/jsview-vue-samples/DriftScopeTest/App.vue'),
1032
+ // meta: { nameText: '抛物运动写法样例', },
1033
+ // path: '/Game/ThrowMoveDemo',
1034
+ // component: () => import('@shijiu/jsview-vue-samples/ThrowMoveDemo/App.vue'),
409
1035
  // },
410
1036
  {
411
- meta: { nameText: '自定义shader', },
412
- path: '/Operations/CustomShader',
413
- component: () => import('@shijiu/jsview-vue-samples/CustomShader/App.vue'),
1037
+ meta: { nameText: '翻牌游戏', },
1038
+ name: "Game-翻牌游戏",
1039
+ path: '/Game/FlipCard',
1040
+ component: () => import('@shijiu/jsview-vue-samples/FlipCard/App.vue'),
414
1041
  },
415
1042
  {
416
- meta: { nameText: '虚线框', },
417
- path: '/Operations/DashPath',
418
- component: () => import('@shijiu/jsview-vue-samples/DashPath/App.vue'),
1043
+ meta: { nameText: '精灵图', },
1044
+ name: "Game-精灵图",
1045
+ path: '/Game/SpriteImage',
1046
+ component: () => import('@shijiu/jsview-vue-samples/SpriteImage/App.vue'),
1047
+ },
1048
+ {
1049
+ meta: { nameText: 'SoundPool', },
1050
+ name: "Game-SoundPool",
1051
+ path: '/Game/SoundPool',
1052
+ component: () => import('@shijiu/jsview-vue-samples/SoundPool/App.vue'),
1053
+ },
1054
+ {
1055
+ meta: { nameText: '碰撞检测', },
1056
+ name: "Game-碰撞检测",
1057
+ path: '/Game/Collision',
1058
+ component: () => import('@shijiu/jsview-vue-samples/Collision/App.vue'),
1059
+ },
1060
+ {
1061
+ meta: { nameText: '碰撞即停', },
1062
+ name: "Game-碰撞即停",
1063
+ path: '/Game/ImpactStop',
1064
+ component: () => import('@shijiu/jsview-vue-samples/ImpactStop/App.vue'),
1065
+ },
1066
+ {
1067
+ meta: { nameText: '红包雨', },
1068
+ name: "Game-红包雨",
1069
+ path: '/Game/GiftRain',
1070
+ component: () => import('@shijiu/jsview-vue-samples/GiftRain/App.vue'),
1071
+ },
1072
+ {
1073
+ meta: { nameText: '雷达图', },
1074
+ name: "Game-雷达图",
1075
+ path: '/Game/RadarChart',
1076
+ component: () => import('@shijiu/jsview-vue-samples/JsvRadarChart/App.vue')
419
1077
  },
420
1078
  ];
421
1079