@shijiu/jsview-vue 1.9.650 → 1.9.720

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/package.json +7 -18
  2. package/samples/AnimPicture/App.vue +5 -5
  3. package/samples/Basic/components/div/DivLayout.vue +1 -1
  4. package/samples/Basic/components/text/TextOverflow.vue +10 -5
  5. package/samples/BasicFocusControl/components/BaseBlock.vue +2 -2
  6. package/samples/Collision/App.vue +452 -0
  7. package/samples/DemoHomepage/components/BodyFrame.vue +2 -0
  8. package/samples/DemoHomepage/router.js +21 -1
  9. package/samples/DemoHomepage/views/Homepage.vue +3 -7
  10. package/samples/FilterDemo/App.vue +1 -1
  11. package/samples/FlipCard/App.vue +2 -2
  12. package/samples/FlipCard/FlipCard.vue +2 -2
  13. package/samples/GridDemo/App.vue +3 -3
  14. package/samples/GridDemo/ButtonBlock.vue +2 -2
  15. package/samples/GridDemo/FocusItem.vue +2 -2
  16. package/samples/GridDemo/Item.vue +1 -1
  17. package/samples/HashHistory/App.vue +10 -3
  18. package/samples/HashHistory/components/Item.vue +1 -1
  19. package/samples/ImpactStop/App.vue +435 -0
  20. package/samples/Input/App.vue +8 -17
  21. package/samples/Input/InputPanel.vue +19 -12
  22. package/samples/LongImage/Button.vue +1 -1
  23. package/samples/LongImage/ButtonItem.vue +1 -1
  24. package/samples/LongImage/LongImageScroll.vue +2 -2
  25. package/samples/LongText/App.vue +1 -1
  26. package/samples/LongText/Button.vue +1 -1
  27. package/samples/LongText/ButtonItem.vue +1 -1
  28. package/samples/LongText/LongTextScroll.vue +3 -3
  29. package/samples/Marquee/App.vue +176 -40
  30. package/samples/Marquee/longText.js +14 -0
  31. package/samples/MetroWidgetDemos/Advanced/App.vue +5 -6
  32. package/samples/MetroWidgetDemos/Advanced/ButtonItem.vue +3 -3
  33. package/samples/MetroWidgetDemos/Advanced/Buttons.vue +5 -5
  34. package/samples/MetroWidgetDemos/Advanced/Mixed.vue +4 -4
  35. package/samples/MetroWidgetDemos/Advanced/widgets/Item.vue +83 -0
  36. package/samples/MetroWidgetDemos/Advanced/widgets/WidgetItem.vue +89 -0
  37. package/samples/MetroWidgetDemos/Advanced/{Widgets.vue → widgets/Widgets.vue} +56 -11
  38. package/samples/MetroWidgetDemos/Advanced/widgets/focus1.png +0 -0
  39. package/samples/MetroWidgetDemos/Item.vue +20 -2
  40. package/samples/MetroWidgetDemos/PerformanceTest/App.vue +4 -4
  41. package/samples/MetroWidgetDemos/PerformanceTest/components/ContentItem.vue +1 -1
  42. package/samples/MetroWidgetDemos/PerformanceTest/components/MyTab.vue +1 -1
  43. package/samples/MetroWidgetDemos/PingPong/App.vue +3 -3
  44. package/samples/MetroWidgetDemos/PingPong/AppPage.vue +17 -2
  45. package/samples/MetroWidgetDemos/PingPong/AppTab.vue +3 -10
  46. package/samples/MetroWidgetDemos/PingPong/{Item.vue → TabItem.vue} +3 -11
  47. package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +2 -2
  48. package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +2 -2
  49. package/samples/MetroWidgetDemos/Simple/App.vue +2 -2
  50. package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +6 -6
  51. package/samples/MetroWidgetDemos/WidgetItem.vue +2 -2
  52. package/samples/MetroWidgetDemos/data.js +2 -1
  53. package/samples/NinePatchDemo/App.vue +2 -2
  54. package/samples/NinePatchDemo/Item.vue +1 -1
  55. package/samples/Preload/App.vue +17 -12
  56. package/samples/Preload/Item.vue +1 -1
  57. package/samples/QrcodeDemo/App.vue +1 -1
  58. package/samples/ScaleDownNeon/App.vue +107 -0
  59. package/samples/SoundPool/App.vue +1 -1
  60. package/samples/TextBox/App.vue +9 -82
  61. package/samples/TextBox/RenderCenter.vue +40 -16
  62. package/samples/TextBox/RenderLeft.vue +48 -19
  63. package/samples/TextBox/RenderOneLine.vue +30 -49
  64. package/samples/TextBox/RenderRight.vue +40 -16
  65. package/samples/TextShadowDemo/App.vue +11 -17
  66. package/samples/TextureAnimation/App2.vue +43 -15
  67. package/samples/TextureAnimation/assets/light.png +0 -0
  68. package/samples/TextureAnimation/assets/light2.png +0 -0
  69. package/samples/TextureSize/App.vue +3 -3
  70. package/samples/TouchSample/MetroWidgetHorizontal.vue +1 -1
  71. package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
  72. package/samples/TransitPage/App.vue +1 -1
  73. package/samples/VideoDemo/App.vue +8 -8
  74. package/samples/VideoDemo/components/Button.vue +1 -1
  75. package/samples/VisibleSensorDemo/App.vue +94 -27
  76. package/tsconfig.json +6 -6
  77. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +55 -59
  78. package/utils/JsViewEngineWidget/JsvFocusManager.js +1 -1
  79. package/utils/JsViewEngineWidget/MetroWidget/Const.js +11 -0
  80. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +226 -107
  81. package/utils/JsViewEngineWidget/TemplateParser.js +227 -178
  82. package/utils/JsViewEngineWidget/WidgetCommon.js +13 -5
  83. package/utils/JsViewEngineWidget/index.js +3 -2
  84. package/utils/JsViewPlugin/BrowserPluginLoader.js +1 -1
  85. package/utils/JsViewPlugin/JsvPlayer/JsvMedia.js +95 -12
  86. package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +23 -2
  87. package/utils/JsViewPlugin/JsvPlayer/JsvPlayerBrowser.vue +1 -1
  88. package/utils/JsViewPlugin/JsvPlayer/index.js +22 -1
  89. package/utils/JsViewPlugin/JsvPlayer/version.js +4 -4
  90. package/utils/JsViewVueTools/JsvImpactTracer.js +113 -0
  91. package/utils/JsViewVueTools/JsvStyleClass.js +1 -1
  92. package/utils/JsViewVueTools/index.js +2 -1
  93. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +11 -1
  94. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +1 -1
  95. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +7 -9
  96. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +1 -1
  97. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +3 -3
  98. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +1 -1
  99. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +5 -5
  100. package/utils/JsViewVueWidget/JsvFilterView.vue +1 -1
  101. package/utils/JsViewVueWidget/JsvGrid.vue +3 -11
  102. package/utils/JsViewVueWidget/JsvInput/Cursor.vue +5 -3
  103. package/utils/JsViewVueWidget/JsvInput/JsvInput.vue +15 -14
  104. package/utils/JsViewVueWidget/JsvMarquee.vue +180 -207
  105. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +2 -2
  106. package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +35 -27
  107. package/utils/JsViewVueWidget/JsvNinePatch.vue +1 -2
  108. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +38 -42
  109. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +1 -1
  110. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +1 -1
  111. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +24 -8
  112. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +23 -3
  113. package/utils/JsViewVueWidget/JsvTextBox.vue +20 -86
  114. package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +2 -9
  115. package/utils/JsViewVueWidget/JsvTouchContainer.vue +6 -7
  116. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +1 -1
  117. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +6 -6
  118. package/utils/JsViewVueWidget/index.js +8 -8
  119. package/utils/JsViewVueWidget/utils/index.js +8 -0
  120. package/utils/JsViewVueWidget/utils/text.js +19 -0
  121. package/dom/bin/jsview-browser-debug-dom.min.js +0 -1
  122. package/dom/bin/jsview-dom.min.js +0 -1
  123. package/dom/bin/jsview-forge-define.min.js +0 -1
  124. package/dom/browser-root-style.css +0 -21
  125. package/dom/jsv-browser-debug-dom.js +0 -8
  126. package/dom/jsv-dom.js +0 -6
  127. package/dom/jsv-forge-define.js +0 -6
  128. package/dom/target_core_revision.mjs +0 -15
  129. package/loader/header_script_loader.js +0 -134
  130. package/loader/jsview-main.js +0 -42
  131. package/loader/jsview.config.default.js +0 -37
  132. package/loader/jsview.default.config.js +0 -37
  133. package/loader/loader.js +0 -179
  134. package/loader/loader_webkit.js +0 -40
  135. package/patches/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js +0 -17609
  136. package/patches/node_modules/@vue/compiler-sfc/dist/jsview-css-to-js.js +0 -335
  137. package/patches/node_modules/@vue/compiler-sfc/dist/jsview-style-format.js +0 -446
  138. package/patches/node_modules/@vue/compiler-sfc/dist/jsview-style-types.js +0 -91
  139. package/patches/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +0 -8038
  140. package/patches/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js +0 -1700
  141. package/patches/node_modules/postcss-js/objectifier.js +0 -90
  142. package/patches/node_modules/vite/dist/node/chunks/dep-0fc8e132.js +0 -63147
  143. package/patches/node_modules/vite/dist/node/jsview.vite.config.js +0 -53
  144. package/patches/node_modules/vue-router/dist/vue-router.mjs +0 -3595
  145. package/scripts/common.js +0 -58
  146. package/scripts/jsview-install-local-packages.js +0 -73
  147. package/scripts/jsview-jsmap-serve.js +0 -105
  148. package/scripts/jsview-post-build.js +0 -183
  149. package/scripts/jsview-post-install.js +0 -102
  150. package/scripts/jsview-run-android.js +0 -67
  151. package/utils/JsViewEngineWidget/MetroPage.js +0 -2128
  152. package/utils/JsViewEngineWidget/SimpleWidget/ContentView.vue +0 -51
  153. package/utils/JsViewEngineWidget/SimpleWidget/Dispatcher.js +0 -19
  154. package/utils/JsViewEngineWidget/SimpleWidget/DivWrapper.vue +0 -53
  155. package/utils/JsViewEngineWidget/SimpleWidget/ItemView.vue +0 -142
  156. package/utils/JsViewEngineWidget/SimpleWidget/RootView.vue +0 -140
  157. package/utils/JsViewEngineWidget/SimpleWidget/SimpleWidget.vue +0 -1629
@@ -190,7 +190,7 @@ function findMediaObjectByKey(key){
190
190
  }
191
191
 
192
192
  class JsvBaseMedia {
193
- constructor(type, hole_id, player_type, key, background, design_map_width, decode_type) {
193
+ constructor(type, window_mode, hole_id, player_type, key, background, design_map_width, decode_type) {
194
194
  logTrace("Create JsvBaseMedia, type="+type+", hole_id="+hole_id+", player_type="+player_type+", key="+key+", background="+background+", design_map_width="+design_map_width+", decode_type="+decode_type);
195
195
 
196
196
  this.state = {
@@ -206,6 +206,7 @@ class JsvBaseMedia {
206
206
  timeUpdateLess: false,
207
207
  rate: 1.0,
208
208
  volume: 1.0,
209
+ chromaKey: null,
209
210
  };
210
211
 
211
212
  this.local = {
@@ -219,6 +220,7 @@ class JsvBaseMedia {
219
220
  this.type = type;
220
221
  this.playerCreate = false;
221
222
  this.key = key;
223
+ this.windowMode = window_mode;
222
224
  this.background = background;
223
225
  this.holeId = hole_id;
224
226
  this.holeIdModify = hole_id;
@@ -265,7 +267,7 @@ class JsvBaseMedia {
265
267
 
266
268
  let share_view = true;
267
269
 
268
- let result = window.jsvPlayerBridge.CreatePlayer(this.key, this.holeId, this.background, this.designMapWidth, share_view, this.playerType, this.decodeType, "top.CreatePlayerResult");
270
+ let result = window.jsvPlayerBridge.CreatePlayer(this.key, this.windowMode, this.holeId, this.background, this.designMapWidth, share_view, this.playerType, this.decodeType, "top.CreatePlayerResult");
269
271
  if(result > 0){
270
272
  this.initPlayer();
271
273
  }
@@ -341,6 +343,10 @@ class JsvBaseMedia {
341
343
  if(this.state["aspectRatio"] !== "origin"){
342
344
  this.setState("aspectRatio", this.state["aspectRatio"], "string");
343
345
  }
346
+
347
+ if(this.state["chromaKey"]){
348
+ this.setState("chromaKey", this.state["chromaKey"], "string");
349
+ }
344
350
  }
345
351
 
346
352
  onVisibilityChangeCallBack(){
@@ -841,7 +847,7 @@ class JsvBaseMedia {
841
847
  * 属性,string类型,播放地址,不支持读取。
842
848
  */
843
849
  set src(value) {
844
- this.setSrc(value, null, 1)
850
+ this.setSrc(value, null, null, 1)
845
851
  }
846
852
 
847
853
  /**
@@ -890,17 +896,26 @@ class JsvBaseMedia {
890
896
  /**
891
897
  * 设置播放地址。
892
898
  * @param {string} url 播放地址。
899
+ * @param {String} windowMode 播放器窗口模式。
900
+ * null:使用this.windowMode作为窗口模式。
901
+ * full:观影模式,全屏方式,不建议修改w/h/l/t,视频清晰度/流畅度最佳;
902
+ * resizable:可变窗口模式,可以随意修改w/h/l/t,支持动画效果,视频清晰度/流畅度表现可能不如full模式;
903
+ * pip:画中画模式,只在支持多路硬解的情况下使用,用户画中画的小窗播放,对清晰度/流畅度要求较差,可能会有反交错问题。
893
904
  * @param {string} head 网络请求的head信息,可以为NULL。
894
- * @param {int} type 类型,1表示点播,2表示直播,3表示时移,默认1。
905
+ * @param {int} type 类型,1表示点播,2表示直播,3表示时移,4表示回看,默认1。
895
906
  * @param {double} timeShift 时移时间,只有在type=3时才有效,表示从当前时间时移多长时间,单位秒。
896
907
  * @param {int} 分辨率类型 0:unknown或其它;1:标清;2:高清;3:超清(720P);4:蓝光(1080P);5:2K;6:4K;7:8K。
908
+ * @param {int} 用户频道号,只在直播回看状态下需要设置
897
909
  */
898
- setSrc(url, head, type, timeShift, resolution){
910
+ setSrc(url, windowMode, head, type, timeShift, resolution, mixNo){
899
911
  let src = {};
900
912
  src.url = url;
901
913
  if(head){
902
914
  src.head = head;
903
915
  }
916
+ if(windowMode){
917
+ src.windowMode = windowMode;
918
+ }
904
919
  if(type){
905
920
  src.type = type;
906
921
  }else{
@@ -914,6 +929,10 @@ class JsvBaseMedia {
914
929
  src.resolution = resolution;
915
930
  }
916
931
 
932
+ if(mixNo && typeof mixNo == "number"){
933
+ src.channelID = mixNo;
934
+ }
935
+
917
936
  this.currentEventStatus = EVENT_STATUS_NONE;
918
937
  this.setState("src", JSON.stringify(src), "string");
919
938
  this.eventReport = true;
@@ -1154,12 +1173,46 @@ class JsvBaseMedia {
1154
1173
  * @param {double} time,值为从当前时间计算向前移动了多长时间,单位秒。
1155
1174
  */
1156
1175
  setTimeShift(time){
1157
- logTrace("setTimeShift, key="+this.key+", time"+time);
1176
+ logTrace("setTimeShift, key="+this.key+", time="+time);
1158
1177
  if(this.playerCreate && this.appVisible){
1159
1178
  window.jsvPlayerBridge.setTimeShift(this.key, time);
1160
1179
  }
1161
1180
  }
1162
1181
 
1182
+ /**
1183
+ * 设置色度抠像参数,只支持扣绿。
1184
+ * 参考格式:{color: 0x30FF30, colorDistance: 0.15, edgeDistance: 0.4, greenOffset: 0.05}
1185
+ * @param {JSON object} chromaKey,抠像参数,JSON Object包含的参数如下:
1186
+ * color,色值,int类型,为抠图色值范围的中心点,格式为0xRRGGBB。
1187
+ * colorDistance,float类型,色域范围,范围0-1.0。
1188
+ * edgeDistance,float类型,alpha透明度距离,范围colorDistance-1.0,从colorDistance到edgeDistance的alpha值从1.0-0线性递减。
1189
+ * greenOffset,float类型,红蓝差值,范围0-1.0。
1190
+ */
1191
+ setChromaKey(chromaKey){
1192
+ logTrace("setChromaKey, key="+this.key+", chroma key="+JSON.stringify(chromaKey));
1193
+ this.setState("chromaKey", JSON.stringify(chromaKey), "string");
1194
+ }
1195
+
1196
+ setDebugMode(mode){
1197
+ logTrace("setDebugMode, key="+this.key+", mode="+mode);
1198
+ if(typeof window.jsvPlayerBridge !== "undefined"){
1199
+ return window.jsvPlayerBridge.setDebugMode(this.key, mode);
1200
+ }
1201
+ }
1202
+
1203
+ /**
1204
+ * 获取是否支持倍速设置,在onCanPlay事件发送以后,通过此接口查询。
1205
+ * @returns {boolean} true:支持播放倍速设置;false:不支持播放倍速设置。
1206
+ * */
1207
+ supportPlaybackRateSet(){
1208
+ logTrace("supportPlaybackRateSet, key="+this.key);
1209
+ if(typeof window.jsvPlayerBridge !== "undefined"){
1210
+ return window.jsvPlayerBridge.supportRateSet(this.key);
1211
+ }
1212
+
1213
+ return false;
1214
+ }
1215
+
1163
1216
  /**
1164
1217
  * 私有接口,外部不需要调用此接口。
1165
1218
  */
@@ -1215,21 +1268,21 @@ class JsvBaseMedia {
1215
1268
  }
1216
1269
 
1217
1270
  class JsvMedia extends JsvBaseMedia {
1218
- constructor(type, hole_id, player_type, key, background, design_map_width, decode_type) {
1219
- super(type, hole_id, player_type, key, background, design_map_width, decode_type);
1271
+ constructor(type, window_mode, hole_id, player_type, key, background, design_map_width, decode_type) {
1272
+ super(type, window_mode, hole_id, player_type, key, background, design_map_width, decode_type);
1220
1273
  //super.buildPlatformInstance(type);
1221
1274
  }
1222
1275
  }
1223
1276
 
1224
1277
  class JsvMediaAudio extends JsvMedia {
1225
1278
  constructor() {
1226
- super("audio", null, null, null, null, null, 0);
1279
+ super("audio", "resizable", null, null, null, null, null, 0);
1227
1280
  }
1228
1281
  }
1229
1282
 
1230
1283
  class JsvMediaVideo extends JsvMedia {
1231
- constructor(hole_id, player_type, key, background, design_map_width, decode_type) {
1232
- super("video", hole_id, player_type, key, background, design_map_width, decode_type);
1284
+ constructor(hole_id, window_mode, player_type, key, background, design_map_width, decode_type) {
1285
+ super("video", window_mode, hole_id, player_type, key, background, design_map_width, decode_type);
1233
1286
 
1234
1287
  this.state.aspectRatio = 'origin'; // 'origin', 'full', '16:9', '4:3',
1235
1288
  }
@@ -1286,7 +1339,7 @@ function getJsvPlayerCapabilitySet(){
1286
1339
  * 支持三个属性:1、total:总的播放器个数;2、hardware:硬解播放器个数;3、软解播放器个数,如果硬解播放器个数不满足需求,会根据cpu能力确定是否提供软解播放器。
1287
1340
  * */
1288
1341
  function setJsvPlayerNumber(videoType, num){
1289
- logTrace("setPlayerNumber, key="+this.key+", videoType="+videoType+", num="+num);
1342
+ logTrace("setPlayerNumber, videoType="+videoType+", num="+num);
1290
1343
  if(typeof window.jsvPlayerBridge !== "undefined"){
1291
1344
  return window.jsvPlayerBridge.setPlayerNumber(videoType, num);
1292
1345
  }else{
@@ -1294,10 +1347,37 @@ function setJsvPlayerNumber(videoType, num){
1294
1347
  }
1295
1348
  }
1296
1349
 
1350
+ function setJsvPlayerDebugMode(mode){
1351
+ logTrace("setJsvPlayerDebugMode, mode="+mode);
1352
+ if(typeof window.jsvPlayerBridge !== "undefined"){
1353
+ window.jsvPlayerBridge.setDebugMode(null, mode);
1354
+ }
1355
+ }
1356
+
1357
+ function getJsvPlayerRunningNum(){
1358
+ logTrace("getJsvPlayerRunningNum");
1359
+ if(typeof window.jsvPlayerBridge !== "undefined"){
1360
+ return window.jsvPlayerBridge.getRunningPlayerNum();
1361
+ }
1362
+ return -1;
1363
+ }
1364
+
1365
+ function setOperator(operator){
1366
+ logTrace("setOperator");
1367
+ if(typeof window.jsvPlayerBridge !== "undefined"){
1368
+ return window.jsvPlayerBridge.setOperator(operator);
1369
+ }
1370
+ }
1371
+
1372
+ function globalLoadSetOperator(operator){
1373
+ setOperator(operator)
1374
+ }
1375
+
1297
1376
  export {
1298
1377
  JsvMediaVideo,
1299
1378
  JsvMediaAudio,
1300
1379
  globalLoadJsvPlayerPlugin,
1380
+ globalLoadSetOperator,
1301
1381
  findMediaObjectByKey,
1302
1382
  getJsvPlayerCapabilitySet,
1303
1383
  setJsvPlayerNumber,
@@ -1307,4 +1387,7 @@ export {
1307
1387
  logWarning,
1308
1388
  logDebug,
1309
1389
  logTrace,
1390
+ setJsvPlayerDebugMode,
1391
+ getJsvPlayerRunningNum,
1392
+ setOperator,
1310
1393
  }
@@ -1,6 +1,6 @@
1
1
  <script>
2
2
  import {JsvMediaVideo, findMediaObjectByKey, logDebug} from './JsvMedia'
3
- import JsvNativeSharedDiv from 'jsview/utils/JsViewVueWidget/JsvNativeSharedDiv.vue'
3
+ import JsvNativeSharedDiv from '../../JsViewVueWidget/JsvNativeSharedDiv.vue'
4
4
 
5
5
 
6
6
  export default {
@@ -18,6 +18,13 @@ export default {
18
18
  * 属性,String类型,播放器实例索引,同样的key使用同一个播放器实例。
19
19
  */
20
20
  playerKey: { type: String, default: null},
21
+ /**
22
+ * 属性,String类型,播放器窗口模式,默认resizable模式。
23
+ * full:观影模式,全屏方式,不建议修改w/h/l/t,视频清晰度/流畅度最佳;
24
+ * resizable:可变窗口模式,可以随意修改w/h/l/t,支持动画效果,视频清晰度/流畅度表现可能不如full模式;
25
+ * pip:画中画模式,只在支持多路硬解的情况下使用,用户画中画的小窗播放,对清晰度/流畅度要求较差,可能会有反交错问题。
26
+ */
27
+ windowMode: {type: String, default: "resizable"},
21
28
  /**
22
29
  * 属性,int类型,底层使用的播放器类型。1:系统播放器;2:jsv播放器。默认2。
23
30
  */
@@ -54,6 +61,16 @@ export default {
54
61
  * 属性,String类型,视频显示比例,origin原始比例显示,full全屏显示,x:y按照指定比例显示。
55
62
  */
56
63
  videoAspectRatio: {type: String, default: "origin"},
64
+ /**
65
+ * 属性,JSON Object类型,色度抠像参数,包含color,colorDistance,edgeDistance,greenOffset四个参数,
66
+ * 参考格式:{color: 0x30FF30, colorDistance: 0.15, edgeDistance: 0.4, greenOffset: 0.05}
67
+ * color,色值,int类型,为抠图色值范围的中心点,格式为0xRRGGBB。
68
+ * colorDistance,float类型,色域范围,范围0-1.0。
69
+ * edgeDistance,float类型,alpha透明度距离,范围colorDistance-1.0,从colorDistance到edgeDistance的alpha值从1.0-0线性递减。
70
+ * greenOffset,float类型,红蓝差值,范围0-1.0。
71
+ * 目前只支持扣绿。
72
+ */
73
+ chromaKey: {type: Object, default: null},
57
74
  /**
58
75
  * 回调函数,播放结束时通过此回调接口通知。
59
76
  */
@@ -226,7 +243,7 @@ export default {
226
243
  let first_create = true;
227
244
 
228
245
  if(!this.video){
229
- this.video = new JsvMediaVideo(this.holeId, player_type, key, background, designMap.width, this.decodeType);
246
+ this.video = new JsvMediaVideo(this.holeId, this.windowMode, player_type, key, background, designMap.width, this.decodeType);
230
247
  }else{
231
248
  this.video.setRef();
232
249
  first_create = false;
@@ -262,6 +279,10 @@ export default {
262
279
  if(this.videoAspectRatio !== "origin"){
263
280
  this.video.videoAspectRatio = this.videoAspectRatio;
264
281
  }
282
+
283
+ if(this.chromaKey && this.chromaKey !== ""){
284
+ this.video.setChromaKey(this.chromaKey)
285
+ }
265
286
  //}else{
266
287
  if(!first_create){
267
288
  this.video.setHoleID(this.holeId);
@@ -38,7 +38,7 @@ export default {
38
38
  beforeUnmount() {
39
39
  if (this.onRef) {
40
40
  // video_ref为null,代表video标签卸载处理
41
- this.onRef(null);
41
+ this.onshallowRef(null);
42
42
  }
43
43
  }
44
44
  };
@@ -2,10 +2,17 @@
2
2
  import * as JsvPlayer from "./JsvPlayer.vue";
3
3
  import { globalLoadJsvPlayerPlugin as initPlugin } from "./JsvMedia.js"
4
4
  import { getJsvPlayerCapabilitySet as getCapabilitySet } from "./JsvMedia.js"
5
+ import { setJsvPlayerDebugMode as setDebugMode } from "./JsvMedia.js"
6
+ import { getJsvPlayerRunningNum as getRunningPlayerNum } from "./JsvMedia.js"
7
+ import { globalLoadSetOperator as setOperator } from"./JsvMedia.js"
5
8
  let _JsvPlayer = JsvPlayer;
6
9
 
7
10
  let globalLoadJsvPlayerPlugin = initPlugin;
8
11
  let getJsvPlayerCapabilitySet = getCapabilitySet;
12
+ let setJsvPlayerDebugMode = setDebugMode;
13
+ let getJsvPlayerRunningNum = getRunningPlayerNum;
14
+ let globalLoadSetOperator = setOperator;
15
+
9
16
  if (window.JsvWidgetWrapperGroup?.BrowserJsvPlayer) {
10
17
  // 浏览器版本
11
18
  _JsvPlayer = window.JsvWidgetWrapperGroup.BrowserJsvPlayer;
@@ -19,6 +26,18 @@ if (window.JsvWidgetWrapperGroup?.BrowserJsvPlayer) {
19
26
  getJsvPlayerCapabilitySet = () => {
20
27
  return null;
21
28
  }
29
+
30
+ setJsvPlayerDebugMode = () => {
31
+ console.log("Set debug mode");
32
+ }
33
+
34
+ getJsvPlayerRunningNum = () => {
35
+ return -1;
36
+ }
37
+
38
+ globalLoadSetOperator = (operator)=>{
39
+ console.log("operator is "+operator);
40
+ }
22
41
  }
23
42
 
24
43
  let component = _JsvPlayer.default;
@@ -27,5 +46,7 @@ export default component;
27
46
  export {
28
47
  globalLoadJsvPlayerPlugin, // 全局初始化播放器插件处理
29
48
  getJsvPlayerCapabilitySet, //获取设备能力集
30
-
49
+ setJsvPlayerDebugMode, //设置调试模式,可以查看帧率等信息
50
+ getJsvPlayerRunningNum, //获取正在运行的播放器个数
51
+ globalLoadSetOperator,// 设置运营商
31
52
  }
@@ -2,16 +2,16 @@ let PluginInfo={
2
2
  // downloadUrl:"http://192.168.0.63:8080/plugin/JsvPlayer-164.zip", //插件下载地址
3
3
  packageName:"com.qcode.jsvplayer",
4
4
  name:"播放器插件",
5
- version:"1.6.6", //插件需要的版本号
6
- versionCodeMin:166,
7
- versionCodeMax:166,
5
+ version:"1.8.6", //插件需要的版本号
6
+ versionCodeMin:186,
7
+ versionCodeMax:186,
8
8
  bridgeName:"jsvPlayerBridge", //插件bridge注册到jsview的名称
9
9
  className:"com.qcode.jsvplayer.JsvPlayer", //插件初始化类名称
10
10
  initMethod:"createInstance", //插件初始化方法
11
11
  listener:"top.JsvPlayerPluginLoadResult", //插件加载结果回调
12
12
  listener2: "top.JsvPlayerPluginStatus",
13
13
  // debug:true,
14
- md5:"b08edbe68f22ba93855a2016d9372858"
14
+ md5:"1371d41e658d20b4b29477a3c7649654"
15
15
  };
16
16
 
17
17
  // 不要用export default,update-env脚本不能解析
@@ -0,0 +1,113 @@
1
+ /*
2
+ * @Author: ChenChanghua
3
+ * @Date: 2022-08-30 10:54:42
4
+ * @LastEditors: ChenChanghua
5
+ * @LastEditTime: 2022-08-30 10:54:44
6
+ * @Description: file content
7
+ */
8
+ /**
9
+ * Created by donglin.lu@qcast.cn on 4/30/2020.
10
+ */
11
+
12
+ /*
13
+ * 【模块 export 内容】
14
+ * createImpactTracer: 函数,创建碰撞跟踪对象
15
+ * createImpactCallback: 函数,创建碰撞发生后的回调函数
16
+ * createImpactAutoFroze: 函数,注册碰撞发生后,控制动画立刻停止的管理对象
17
+ * updateImpactAutoFroze: 函数,更新 createImpactAutoFroze 创建的碰撞即停管理对象中管理的运动元素列表
18
+ */
19
+
20
+ import { Forge } from "../../../jsview/dom/jsv-forge-define";
21
+
22
+ /*
23
+ * createImpactCallback 参数说明:
24
+ * on_contact (function[]) 接受碰撞事件的回调
25
+ * on_dis_contact (function[]) 接受物体分离事件的回调
26
+ * 返回值:
27
+ * Object 句柄,用于传输给 createImpactTracer
28
+ */
29
+ function createImpactCallback(on_contact, on_dis_contact) {
30
+ return new Forge.sImpactSensorManager.Callback(on_contact, on_dis_contact);
31
+ }
32
+
33
+ /*
34
+ * createImpactTracer 参数说明:
35
+ * ele1 (Element) html element句柄,1号碰撞体
36
+ * ele2 (Element) html element句柄,2号碰撞体
37
+ * callback (Object) 由 createImpactCallback 创建的回调构造体句柄
38
+ * auto_froze (Object) 由 createImpactAutoFroze 创建的碰撞即停构造体句柄
39
+ * 返回值:
40
+ * Object 句柄,提供 Recycle() 函数用于停止碰撞检测,需要再componentWillUnmount进行调用(清理)
41
+ */
42
+ function createImpactTracer(ele1, ele2, callback, auto_froze) {
43
+ return Forge.sImpactSensorManager.StartTrace(ele1.jsvGetProxyView(), ele2.jsvGetProxyView(), callback, auto_froze);
44
+ }
45
+
46
+ // 创建用于设置碰撞即停管理对象的参数
47
+ // 结果用于函数 createImpactAutoFroze 和 updateImpactAutoFroze
48
+ function _ConvertToViewsList(elements_array) {
49
+ const views_array = [];
50
+ if (elements_array) {
51
+ for (const ele of elements_array) {
52
+ views_array.push(ele.jsvGetProxyView());
53
+ }
54
+ }
55
+ return views_array;
56
+ }
57
+
58
+ /*
59
+ * createImpactAutoFroze 参数说明:
60
+ * element_auto_froze_pre_impact (Array<Element>) 关联运动元素的列表,这些元素碰撞前一帧停止运动
61
+ * element_auto_froze_on_impact (Array<Element>) 关联运动元素的列表,这些元素碰撞当前帧停止运动
62
+ * 返回值:
63
+ * Object 句柄,用于传输给 createImpactTracer,也用于 updateImpactAutoFroze 调整关联元素
64
+ *
65
+ * 【注意点】
66
+ * 多个碰撞对可以共享同一个碰撞管理对象,并且建议共享同一个对象以提升效率
67
+ * 该管理对象中的view的列表可以通过 updateImpactAutoFrozeHandler进行更新,
68
+ * 更新后立刻在对所有的共享此管理对象的碰撞对中生效
69
+ */
70
+ function createImpactAutoFroze(element_auto_froze_pre_impact, element_auto_froze_on_impact) {
71
+ if (!element_auto_froze_pre_impact && !element_auto_froze_on_impact) {
72
+ // Nothing to set
73
+ return;
74
+ }
75
+
76
+ const pre_impact_list = _ConvertToViewsList(element_auto_froze_pre_impact);
77
+ const on_impact_list = _ConvertToViewsList(element_auto_froze_on_impact);
78
+
79
+ return new Forge.sImpactSensorManager.AutoFroze(
80
+ (pre_impact_list.length > 0 ? pre_impact_list : null),
81
+ (on_impact_list.length > 0 ? on_impact_list : null));
82
+ }
83
+
84
+ /*
85
+ * updateImpactAutoFroze 参数说明:
86
+ * handler (Object) 由 createImpactAutoFroze 创建的句柄
87
+ * element_auto_froze_pre_impact (Array<Element>) 关联运动元素的列表,这些元素碰撞前一帧停止运动
88
+ * element_auto_froze_on_impact (Array<Element>) 关联运动元素的列表,这些元素碰撞当前帧停止运动
89
+ * 返回值:
90
+ * 无
91
+ */
92
+ function updateImpactAutoFroze(handler, element_auto_froze_pre_impact, element_auto_froze_on_impact) {
93
+ if (handler instanceof Forge.sImpactSensorManager.AutoFroze) {
94
+ console.error("Error: handler type error");
95
+ return;
96
+ }
97
+
98
+ const pre_impact_list = _ConvertToViewsList(element_auto_froze_pre_impact);
99
+ const on_impact_list = _ConvertToViewsList(element_auto_froze_on_impact);
100
+
101
+ // 更新碰撞即停列表
102
+ handler.UpdatePreImpactList((pre_impact_list.length > 0 ? pre_impact_list : null));
103
+
104
+ // 更新接触接触即停列表
105
+ handler.UpdateOnImpactList((on_impact_list.length ? on_impact_list : null));
106
+ }
107
+
108
+ export {
109
+ createImpactCallback,
110
+ createImpactTracer,
111
+ createImpactAutoFroze,
112
+ updateImpactAutoFroze,
113
+ };
@@ -33,7 +33,7 @@
33
33
  */
34
34
 
35
35
  import { getCssStyleGroup } from "./JsvDynamicCssStyle";
36
- import { Forge } from "../../dom/jsv-forge-define";
36
+ import { Forge } from "../../../jsview/dom/jsv-forge-define";
37
37
 
38
38
  let sIdGenerator = 100;
39
39
 
@@ -2,7 +2,7 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2022-07-05 14:09:55
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-07-06 11:03:34
5
+ * @LastEditTime: 2022-08-30 10:58:14
6
6
  * @Description: file content
7
7
  */
8
8
 
@@ -16,4 +16,5 @@ export * from "./JsvRefTaker.js";
16
16
  export * from "./JsvStyleClass.js";
17
17
  export * from "./DebugContentShellJBridge.js";
18
18
  export * from "./DebugTool.js";
19
+ export * from "./JsvImpactTracer.js";
19
20
  export { default as DefaultKeyCodeMap } from "./DefaultKeyMap.js";
@@ -10,6 +10,8 @@ export default {
10
10
  setup() {
11
11
  return {
12
12
  preloadResultMap: {},
13
+ downloadResultMap: {},
14
+ downloadUrlList: [],
13
15
  unmountStatus: {unmount:false}
14
16
  };
15
17
  },
@@ -70,16 +72,19 @@ export default {
70
72
  },
71
73
  getDownloadList() {
72
74
  this.downloadStateList = new Array(this.downloadList.length).fill(false);
75
+ this.downloadUrlList = new Array(this.downloadStateList.length);
73
76
  let downloadListData = this.downloadList;
74
77
  for (let i = 0; i < downloadListData.length; i++) {
75
78
  if (!downloadListData[i].url) {
76
79
  this.downloadStateList[i] = true;
80
+ this.downloadUrlList[i] = "invalid";
77
81
  // downloadListData.splice(i, 1);
78
82
  }
79
83
  }
80
84
  this._DownloadViewList = downloadListData.map((item, index) => {
81
85
  if (!item.url) {
82
86
  this.downloadStateList[index] = true;
87
+ this.downloadUrlList[index] = "invalid";
83
88
  return null;
84
89
  }
85
90
  const image = new Image();
@@ -91,6 +96,11 @@ export default {
91
96
  }
92
97
 
93
98
  this.downloadStateList[index] = true;
99
+ this.downloadUrlList[index] = item.url;
100
+ this.downloadResultMap[item.url] = {
101
+ width: image.width,
102
+ height: image.height
103
+ }
94
104
  console.log(`pre download succeed ${item.url}`);
95
105
  if (this.onDownloadDone) {
96
106
  let downloadNum = 0;
@@ -98,7 +108,7 @@ export default {
98
108
  downloadNum += item ? 1 : 0;
99
109
  });
100
110
  if (downloadNum == this.downloadStateList.length) {
101
- this.onDownloadDone?.();
111
+ this.onDownloadDone?.(this.downloadUrlList, this.downloadResultMap);
102
112
  }
103
113
  }
104
114
  };
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script>
9
- import { Forge } from "../../../dom/jsv-forge-define";
9
+ import { Forge } from "../../../../jsview/dom/jsv-forge-define";
10
10
 
11
11
  export default {
12
12
  props: {
@@ -2,12 +2,11 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2022-02-08 09:29:17
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-08-22 16:00:50
5
+ * @LastEditTime: 2022-11-24 10:15:37
6
6
  * @Description: file content
7
7
  -->
8
8
  <script>
9
- import { ref } from "vue";
10
- import { getKeyFramesGroup } from "jsview/utils/JsViewVueTools/JsvDynamicKeyFrames";
9
+ import { getKeyFramesGroup } from "../../JsViewVueTools/JsvDynamicKeyFrames";
11
10
 
12
11
  const DECORATE_BORDER_RADIUS = "BroderRaidus";
13
12
  const DECORATE_NINEPATCH_ALPHA_MIX = "NinePatchAlphaMix";
@@ -102,7 +101,7 @@ export default {
102
101
  type: Object,
103
102
  },
104
103
  },
105
- setup(props) {
104
+ setup() {
106
105
  let styleShell = getKeyFramesGroup();
107
106
  return {
108
107
  styleShell,
@@ -205,15 +204,14 @@ export default {
205
204
  overflow: 'hidden',
206
205
  };
207
206
  }
208
- } else {
209
- return {
207
+ }
208
+ return {
210
209
  left: this.left + "px",
211
210
  top: this.top + "px",
212
211
  width: this.width + "px",
213
212
  height: this.height + "px",
214
213
  overflow: 'hidden',
215
214
  };
216
- }
217
215
  },
218
216
  },
219
217
  methods: {
@@ -250,7 +248,7 @@ export default {
250
248
 
251
249
  this.animDiv.appendChild(imgDiv);
252
250
  clipDiv.appendChild(this.animDiv);
253
- this.$refs.root.jsvMaskView.Element.appendChild(clipDiv);
251
+ this.$refs.root.jsvGetProxyView(true).Element.appendChild(clipDiv);
254
252
 
255
253
  this.watcherHandlerList.push(
256
254
  this.$watch("left", (newValue) => {
@@ -297,4 +295,4 @@ export default {
297
295
 
298
296
  <template>
299
297
  <div ref="root"></div>
300
- </template>
298
+ </template>
@@ -5,7 +5,7 @@
5
5
  * @LastEditTime: 2021-10-21 13:17:11
6
6
  * @Description: file content
7
7
  */
8
- import { Forge } from "../../../dom/jsv-forge-define";
8
+ import { Forge } from "../../../../jsview/dom/jsv-forge-define";
9
9
 
10
10
  // JsvSpriteBase comes from JsView React Project
11
11
 
@@ -2,7 +2,7 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2021-10-20 17:21:21
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2021-11-18 16:45:05
5
+ * @LastEditTime: 2022-08-31 11:14:13
6
6
  * @Description: file content
7
7
  -->
8
8
 
@@ -44,11 +44,11 @@ export default {
44
44
  refDefine: Object,
45
45
  },
46
46
  mounted() {
47
- this.control._SetView(this.$refs.element.jsvMainView);
47
+ this.control._SetView(this.$refs.element.jsvGetProxyView());
48
48
  if (this.refDefine) {
49
49
  const type = typeof this.refDefine;
50
50
  if (type === "object") {
51
- type.current = this.$refs.element;
51
+ this.refDefine.current = this.$refs.element;
52
52
  } else if (type === "function") {
53
53
  this.refDefine(this.$refs.element);
54
54
  }
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  */
8
8
 
9
- import { Forge } from "../../../dom/jsv-forge-define";
9
+ import { Forge } from "../../../../jsview/dom/jsv-forge-define";
10
10
  import ActorControlBase from "./ActorControlBase";
11
11
 
12
12
  const CONST_MOVE_TYPE_ACC = 1; // 抛物变速运动