@shijiu/jsview-vue 2.1.25 → 2.1.200
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.
- package/package.json +1 -1
- package/utils/JsViewEngineWidget/JsvFocusBlock.vue +1 -1
- package/utils/JsViewEngineWidget/JsvFocusHub.ts +123 -0
- package/utils/JsViewEngineWidget/JsvFocusManager.js +4 -3
- package/utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts +145 -51
- package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +51 -64
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +62 -71
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +308 -613
- package/utils/JsViewEngineWidget/TemplateParser/CommonMetroTemplate.ts +127 -247
- package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +1 -0
- package/utils/JsViewEngineWidget/TemplateParser/MetroTemplate.ts +36 -2
- package/utils/JsViewEngineWidget/WidgetCommon.ts +25 -6
- package/utils/JsViewPlugin/JsvAudio/{JsvAudioBrowser.vue → BrowserAudio/BrowserAudio.vue} +1 -1
- package/utils/JsViewPlugin/JsvAudio/index.js +1 -1
- package/utils/JsViewPlugin/JsvLatex/BrowserDomBuilder.js +37 -0
- package/utils/JsViewPlugin/JsvLatex/Color.ts +43 -0
- package/utils/JsViewPlugin/JsvLatex/JsvLatex.vue +159 -0
- package/utils/JsViewPlugin/JsvLatex/JsvLatexBridgeProxy.js +16 -0
- package/utils/JsViewPlugin/JsvLatex/JsvLatexBrowser.vue +59 -0
- package/utils/JsViewPlugin/JsvLatex/PluginLoader.js +171 -0
- package/utils/JsViewPlugin/JsvLatex/index.js +28 -0
- package/utils/JsViewPlugin/JsvLatex/mathjax-tex-svg.txt +1 -0
- package/utils/JsViewPlugin/JsvLatex/version.js +24 -0
- package/utils/JsViewPlugin/JsvLatex/version.mjs +24 -0
- package/utils/JsViewPlugin/index.js +2 -1
- package/utils/JsViewVueTools/JsvDynamicCssStyle.js +2 -52
- package/utils/JsViewVueTools/JsvPerformance.ts +11 -0
- package/utils/JsViewVueTools/JsvPreDownloader.ts +55 -11
- package/utils/JsViewVueTools/JsvStyleSheetsDeclarer.js +40 -0
- package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CanvasTexture.ts +143 -0
- package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CommandList.ts +24 -0
- package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/Path.ts +198 -0
- package/utils/JsViewVueTools/JsvTextureStore/JsvTextureStore.ts +31 -0
- package/utils/JsViewVueTools/JsvTextureStore/Store.ts +32 -0
- package/utils/JsViewVueTools/JsvTextureStore/Texture.ts +38 -0
- package/utils/JsViewVueTools/index.js +3 -0
- package/utils/JsViewVueWidget/JsvEnableRenderBreak.vue +17 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ActionRefObject.ts +6 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorControl.ts +144 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorState.ts +6 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/{CallbackManager.js → CallbackManager.ts} +19 -10
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ForgeTypeDefine.ts +45 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/FreeMoveActor.vue +1 -1
- package/utils/JsViewVueWidget/JsvFreeMoveActor/JsvEnvBlocker.vue +124 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/KeepFlags.ts +6 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetAction.ts +553 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.ts +138 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.ts +53 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/index.js +11 -1
- package/utils/JsViewVueWidget/JsvHole.js +1 -1
- package/utils/JsViewVueWidget/JsvLine/JsvLine.vue +101 -0
- package/utils/JsViewVueWidget/JsvLine/LineManager.js +62 -0
- package/utils/JsViewVueWidget/JsvLine/index.js +3 -0
- package/utils/JsViewVueWidget/JsvMarquee.vue +316 -139
- package/utils/JsViewVueWidget/JsvMindMap/CommonType.ts +1 -0
- package/utils/JsViewVueWidget/JsvMindMap/Constant.ts +20 -0
- package/utils/JsViewVueWidget/JsvMindMap/DataTree.ts +394 -0
- package/utils/JsViewVueWidget/JsvMindMap/Geometry.ts +277 -0
- package/utils/JsViewVueWidget/JsvMindMap/JsvMindMap.vue +653 -0
- package/utils/JsViewVueWidget/JsvMindMap/index.js +1 -0
- package/utils/JsViewVueWidget/JsvMindMap/rtree.js +628 -0
- package/utils/JsViewVueWidget/JsvNinePatch.vue +2 -2
- package/utils/JsViewVueWidget/JsvPieChart.vue +124 -0
- package/utils/JsViewVueWidget/JsvPosterImage.vue +32 -9
- package/utils/JsViewVueWidget/JsvPreload/BrowserPreload.vue +135 -133
- package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +273 -270
- package/utils/JsViewVueWidget/JsvSector.vue +107 -0
- package/utils/JsViewVueWidget/JsvTextBox.vue +14 -1
- package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +28 -2
- package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +122 -93
- package/utils/JsViewVueWidget/index.js +15 -7
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorControl.js +0 -112
- package/utils/JsViewVueWidget/JsvFreeMoveActor/CommonTools.js +0 -18
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetAction.js +0 -216
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.js +0 -66
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.js +0 -38
- package/utils/JsViewVueWidget/JsvFreeMoveActor/TypeDefine.js +0 -12
- package/utils/JsViewVueWidget/JsvTouchContainer.vue +0 -183
- package/utils/JsViewVueWidget/JsvTransparentDiv.vue +0 -87
- /package/utils/{JsViewVueWidget → JsViewPlugin/JsvAudio/BrowserAudio}/JsvSystemAudio.vue +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TextureBase } from "./Texture";
|
|
2
|
+
|
|
3
|
+
class JsvTextureStore {
|
|
4
|
+
private textureMap: Map<String, TextureBase> = new Map();
|
|
5
|
+
|
|
6
|
+
constructor() {
|
|
7
|
+
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
public addToStore(storeName: String, textureRef: TextureBase) {
|
|
11
|
+
this.textureMap.set(storeName, textureRef);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public getFromStore(storeName: String): TextureBase | undefined {
|
|
15
|
+
return this.textureMap.get(storeName);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public removeFromStore(storeName: String): TextureBase | undefined {
|
|
19
|
+
if (this.textureMap.has(storeName)) {
|
|
20
|
+
let textureBaseRef = this.textureMap.get(storeName);
|
|
21
|
+
this.textureMap.delete(storeName);
|
|
22
|
+
return textureBaseRef;
|
|
23
|
+
} else {
|
|
24
|
+
console.error(`Error: name=${storeName} not in map`);
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
let sStore: JsvTextureStore = new JsvTextureStore();
|
|
31
|
+
|
|
32
|
+
export default sStore;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import sStore from "./Store";
|
|
2
|
+
|
|
3
|
+
export class TextureBase {
|
|
4
|
+
private baseName: String = 'T';
|
|
5
|
+
protected textureRef: any = null; // Forge.ImageTexture
|
|
6
|
+
public storeName: String = '';
|
|
7
|
+
|
|
8
|
+
constructor(baseName: String | null) {
|
|
9
|
+
if (baseName) {
|
|
10
|
+
this.baseName = baseName;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
protected addToStore() {
|
|
15
|
+
this.storeName = `${this.baseName}-${this.textureRef?.GetTextureId()}`;
|
|
16
|
+
sStore.addToStore(this.storeName, this);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* commit
|
|
21
|
+
* 完成绘制设置,出发制作目标texture
|
|
22
|
+
*
|
|
23
|
+
* @return {String} BaseName-textureId 格式的名字,用于 jsvtexturestore:// 的访问链接
|
|
24
|
+
*/
|
|
25
|
+
public commit(): String {
|
|
26
|
+
// Should override by extends to create Forge.ImageTexture -> textureRef
|
|
27
|
+
return this.storeName;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public recycle() {
|
|
31
|
+
// 释放native端的texture实体
|
|
32
|
+
let textureRef = sStore.removeFromStore(this.storeName);
|
|
33
|
+
if (textureRef) {
|
|
34
|
+
// 释放native端的texture实体
|
|
35
|
+
this.textureRef?.RequestToUnload();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -12,6 +12,7 @@ export * from "./NinePatchHelper";
|
|
|
12
12
|
export * from "./TypeCheckAndSet";
|
|
13
13
|
export * from "./JsvRefTaker.js";
|
|
14
14
|
export * from "./JsvStyleClass.js";
|
|
15
|
+
export * from "./JsvStyleSheetsDeclarer.js";
|
|
15
16
|
export * from "./DebugContentShellJBridge.js";
|
|
16
17
|
export * from "./DebugTool.js";
|
|
17
18
|
export * from "./JsvImpactTracer.js";
|
|
@@ -19,3 +20,5 @@ export * from "./JsvTextTools.js";
|
|
|
19
20
|
export * from "./JsvPreDownloader.ts"
|
|
20
21
|
export { default as DefaultKeyCodeMap } from "./DefaultKeyMap.js";
|
|
21
22
|
export * from "./JsvDemoTester.js"
|
|
23
|
+
export * from "./JsvPerformance.ts"
|
|
24
|
+
export * from "./JsvTextureStore/JsvTextureStore.ts"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { RENDER_ITEM_BREAK_KEY } from "../JsViewEngineWidget/WidgetCommon";
|
|
3
|
+
import { shallowRef } from "vue";
|
|
4
|
+
|
|
5
|
+
const itemMounted = shallowRef(false);
|
|
6
|
+
const itemRef = (value) => {
|
|
7
|
+
itemMounted.value = !!value;
|
|
8
|
+
};
|
|
9
|
+
</script>
|
|
10
|
+
<template>
|
|
11
|
+
<div :key="RENDER_ITEM_BREAK_KEY" :ref="itemRef">
|
|
12
|
+
<slot name="renderItem" :key="RENDER_ITEM_BREAK_KEY"></slot>
|
|
13
|
+
</div>
|
|
14
|
+
<div v-if="!itemMounted">
|
|
15
|
+
<slot name="placeHolder"></slot>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: donglin.lu@qcast.cn
|
|
3
|
+
* @Date: 2023-07-05 15:41:00
|
|
4
|
+
* @LastEditors: donglin.lu@qcast.cn
|
|
5
|
+
* @Description: file content
|
|
6
|
+
*/
|
|
7
|
+
import ConditionPackBuilder from "./SetCondition";
|
|
8
|
+
import ActionPackBuilder from "./SetAction"
|
|
9
|
+
import StatePackBuilder from "./SetState";
|
|
10
|
+
import CallbackManager from "./CallbackManager";
|
|
11
|
+
import ActionRefObject from "./ActionRefObject";
|
|
12
|
+
import { RunFreeMoveCmdPacks, FreeMoveAnimClass } from "./ForgeTypeDefine"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ActorControl {
|
|
16
|
+
private _BindView: any;
|
|
17
|
+
private _BindAnim: any;
|
|
18
|
+
private _Callbacks: CallbackManager;
|
|
19
|
+
|
|
20
|
+
private _ConditionPackBuilder: ConditionPackBuilder;
|
|
21
|
+
private _ActionPackBuilder: ActionPackBuilder;
|
|
22
|
+
private _StatePackBuilder: StatePackBuilder;
|
|
23
|
+
|
|
24
|
+
constructor() {
|
|
25
|
+
this._BindView = null;
|
|
26
|
+
this._BindAnim = null;
|
|
27
|
+
this._Callbacks = new CallbackManager();
|
|
28
|
+
this._ConditionPackBuilder = new ConditionPackBuilder(this._Callbacks);
|
|
29
|
+
this._ActionPackBuilder = new ActionPackBuilder(this._Callbacks);
|
|
30
|
+
this._StatePackBuilder = new StatePackBuilder();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
bindForgeView(bindView: any, instantActive: boolean) {
|
|
34
|
+
this._BindView = bindView;
|
|
35
|
+
|
|
36
|
+
if (instantActive) {
|
|
37
|
+
this._EnsureAnim();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* run 执行编排好的intent集合
|
|
43
|
+
*
|
|
44
|
+
* @param {Array} cmdPackList 内容来自 Condition(), State(), Action() 这些工厂类创建的Command pack
|
|
45
|
+
*/
|
|
46
|
+
run(cmdPackList: Array<Object>) {
|
|
47
|
+
if ((window as any).JsView) {
|
|
48
|
+
this._WrappedRun(cmdPackList);
|
|
49
|
+
} else {
|
|
50
|
+
// Browser场景DomProxy需要onReady调用
|
|
51
|
+
let that = this;
|
|
52
|
+
this._BindView.RegisterOnProxyReady(() => {
|
|
53
|
+
that._WrappedRun(cmdPackList);
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
_WrappedRun(cmdPackList: Array<Object>) {
|
|
59
|
+
this._EnsureAnim();
|
|
60
|
+
|
|
61
|
+
if (!(cmdPackList instanceof Array)) {
|
|
62
|
+
console.error("params error");
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
RunFreeMoveCmdPacks(this._BindView, cmdPackList);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Condition
|
|
71
|
+
* 获取创建 ConditionPack 的工厂对象
|
|
72
|
+
* ConditionPack对应支持 .then(cmdPackList), 可传入同 Run 的处理队列
|
|
73
|
+
* 可用方法见 ./SetCondition.js
|
|
74
|
+
* @param {int} group 可选参数,默认为0, 有效值为0~3, 对应默认组, 1组, 2组, 3组, 便于remove时,按组进行清理
|
|
75
|
+
* @param {boolean} multiTimes 可选参数,默认为false, 是否要多次执行, 若为单次,则执行后condition作废
|
|
76
|
+
* @param {string} specName 可选参数,默认null, 命名condition, 用于指定名字进行active/deactive动作的场景
|
|
77
|
+
* @return {ConditionPackBuilder} ConditionPack 的工厂对象
|
|
78
|
+
*/
|
|
79
|
+
condition(
|
|
80
|
+
group: number = 0,
|
|
81
|
+
multiTimes: boolean = false,
|
|
82
|
+
specName: string | null = null
|
|
83
|
+
): ConditionPackBuilder {
|
|
84
|
+
// 注意: 不支持获取condition后,多次复制
|
|
85
|
+
this._ConditionPackBuilder.updateCommandInfo(group, multiTimes, specName);
|
|
86
|
+
return this._ConditionPackBuilder;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Action
|
|
91
|
+
* 获取创建 ActionPack 的工厂对象
|
|
92
|
+
* 注意: ActionPack 是指会改变 speed 或 accelerate 并自动生成子condition的指令,
|
|
93
|
+
* 每个新的Action会覆盖掉前一次的Action设置,包括其关联的condition,
|
|
94
|
+
* 以及上一个action中的回调,以及上一个action中规划中的ActionEvent
|
|
95
|
+
* 可用方法见 ./SetAction.js
|
|
96
|
+
*
|
|
97
|
+
* @param {int} xySpeedKeeps xy轴上的速度是否保持(与新Action不冲突的才会被保留),
|
|
98
|
+
* x轴保持为1, y轴保持为2,可"与或"让两个轴都保持
|
|
99
|
+
* @param {int} xyAccKeeps xy轴上的加速度是否保持(与新Action不冲突的才会被保留),
|
|
100
|
+
* x轴保持为1, y轴保持为2,可"与或"让两个轴都保持
|
|
101
|
+
* @param {Object} actRef 一个Object, 传入后会填入对此action的ref,用于后续制作
|
|
102
|
+
* @return {ActionPackBuilder} ActionPack 的工厂对象
|
|
103
|
+
*/
|
|
104
|
+
action(
|
|
105
|
+
xySpeedKeeps: number = 0,
|
|
106
|
+
xyAccKeeps: number = 0,
|
|
107
|
+
actRef: ActionRefObject | null = null
|
|
108
|
+
): ActionPackBuilder {
|
|
109
|
+
this._ActionPackBuilder.updateCommonInfo(xySpeedKeeps, xyAccKeeps, actRef);
|
|
110
|
+
return this._ActionPackBuilder;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* State
|
|
115
|
+
* 获取创建 StatePack 的工厂对象
|
|
116
|
+
* 在下一帧运行前的设置值,例如清理condition, 或者在下一帧运动的前调整启动运动的位置
|
|
117
|
+
* 可用方法见 ./SetState.js
|
|
118
|
+
* @return {StatePackBuilder} StatePack 的工厂对象
|
|
119
|
+
*/
|
|
120
|
+
state(): StatePackBuilder {
|
|
121
|
+
return this._StatePackBuilder;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
_OnEchoEvent(retJson: string) {
|
|
125
|
+
// 遇到layout后仍然会因为新broadcast有动作时,一帧中可能会有多次回调
|
|
126
|
+
let retJsonObject: Object = JSON.parse(retJson);
|
|
127
|
+
let actorState = retJsonObject;
|
|
128
|
+
let echoTokens = retJsonObject["eTkns"];
|
|
129
|
+
if (echoTokens) {
|
|
130
|
+
for (let etoken of echoTokens) {
|
|
131
|
+
this._Callbacks.invokeCallback(etoken, actorState);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
_EnsureAnim() {
|
|
137
|
+
if (!this._BindAnim) {
|
|
138
|
+
this._BindAnim = new FreeMoveAnimClass(this._OnEchoEvent.bind(this));
|
|
139
|
+
this._BindView.StartAnimation(this._BindAnim);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export default ActorControl;
|
|
@@ -5,29 +5,38 @@
|
|
|
5
5
|
* @Description: file content
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { StateCmdBuilder } from "./
|
|
8
|
+
import { StateCmdBuilder } from "./ForgeTypeDefine"
|
|
9
|
+
|
|
10
|
+
class CallbackInfo {
|
|
11
|
+
public funcRef: Function; // 回调函数
|
|
12
|
+
public times: number; // 回调的次数
|
|
13
|
+
public once: boolean; // 是否单次回调就销毁
|
|
14
|
+
}
|
|
9
15
|
|
|
10
16
|
class CallbackManager {
|
|
17
|
+
private _CallbackMap: Map<string, CallbackInfo>;
|
|
18
|
+
private _IdGen: number;
|
|
19
|
+
|
|
11
20
|
constructor() {
|
|
12
21
|
this._CallbackMap = new Map();
|
|
13
22
|
this._IdGen = 1;
|
|
14
23
|
}
|
|
15
24
|
|
|
16
|
-
addCallback(func, callMulti) {
|
|
25
|
+
private addCallback(func: Function, callMulti: boolean): string {
|
|
17
26
|
let id = "" + this._IdGen++;
|
|
18
27
|
this._CallbackMap.set(id, {
|
|
19
|
-
|
|
28
|
+
funcRef: func, // 回调函数
|
|
20
29
|
times: 0, // 回调的次数
|
|
21
30
|
once: !callMulti, // 是否单次回调就销毁
|
|
22
31
|
})
|
|
23
32
|
return id;
|
|
24
33
|
}
|
|
25
34
|
|
|
26
|
-
clearCallback() {
|
|
35
|
+
public clearCallback() {
|
|
27
36
|
this._CallbackMap = new Map();
|
|
28
37
|
}
|
|
29
38
|
|
|
30
|
-
expiredIds(ids) {
|
|
39
|
+
public expiredIds(ids: Array<string>) {
|
|
31
40
|
// 删除已经无效的ids
|
|
32
41
|
if (ids) {
|
|
33
42
|
for (let key of this._CallbackMap.keys()) {
|
|
@@ -40,16 +49,16 @@ class CallbackManager {
|
|
|
40
49
|
}
|
|
41
50
|
}
|
|
42
51
|
|
|
43
|
-
invokeCallback(id, actorState) {
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
public invokeCallback(id: string, actorState: Object) {
|
|
53
|
+
let callbackObj = this._CallbackMap.get(id);
|
|
54
|
+
if (callbackObj) {
|
|
46
55
|
if (callbackObj.once) {
|
|
47
56
|
this._CallbackMap.delete(id);
|
|
48
57
|
} else {
|
|
49
58
|
callbackObj.times++;
|
|
50
59
|
}
|
|
51
60
|
try {
|
|
52
|
-
callbackObj.
|
|
61
|
+
callbackObj.funcRef?.(actorState);
|
|
53
62
|
} catch (e) {
|
|
54
63
|
// 规避 callback 执行出错导致流程执行不下去
|
|
55
64
|
console.error("Error: callback error", e);
|
|
@@ -57,7 +66,7 @@ class CallbackManager {
|
|
|
57
66
|
}
|
|
58
67
|
}
|
|
59
68
|
|
|
60
|
-
buildCallbackCmd(func) {
|
|
69
|
+
public buildCallbackCmd(func: Function): Object {
|
|
61
70
|
let funcIdStr = this.addCallback(func, true);
|
|
62
71
|
return StateCmdBuilder.FireEcho(funcIdStr); // 以funcIdStr 作为echoToken
|
|
63
72
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: donglin.lu@qcast.cn
|
|
3
|
+
* @Date: 2023-07-18 11:14:00
|
|
4
|
+
* @LastEditors: donglin.lu@qcast.cn
|
|
5
|
+
* @Description: file content
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Forge } from "@shijiu/jsview/dom/jsv-forge-define.mjs";
|
|
9
|
+
|
|
10
|
+
// 此文件声明来自engine-js的api和类型声明
|
|
11
|
+
|
|
12
|
+
// ActEvent
|
|
13
|
+
const forgeEvtTypeRef = Forge.FreeMoveActEvtType;
|
|
14
|
+
const ActEventDefine = {
|
|
15
|
+
ActFinish: forgeEvtTypeRef.ActEvent_ActFinish,
|
|
16
|
+
SpeedRevertX: forgeEvtTypeRef.ActEvent_Speed_X_Revert,
|
|
17
|
+
SpeedRevertY: forgeEvtTypeRef.ActEvent_Speed_Y_Revert,
|
|
18
|
+
ActReject: forgeEvtTypeRef.ActEvent_ActReject, // 当动作不可能完成,会回调此事件
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// GroupType
|
|
22
|
+
const GroupType_ActionAssoc: number = Forge.FreeMoveExternType?.GroupType_ActionAssoc;
|
|
23
|
+
|
|
24
|
+
// Builders
|
|
25
|
+
const ConditionSetBuilder: any = Forge.FreeMoveConditionSet;
|
|
26
|
+
const StateCmdBuilder: any = Forge.FreeMoveStateBuilder;
|
|
27
|
+
const ActionCmdBuilder: any = Forge.FreeMoveActionBuilder;
|
|
28
|
+
const CmdPackBuilder: any = Forge.FreeMoveCmdPackBuilder;
|
|
29
|
+
|
|
30
|
+
// FreeMoveAnimation class
|
|
31
|
+
const FreeMoveAnimClass: any = Forge.FreeMoveAnimation;
|
|
32
|
+
|
|
33
|
+
// Run function
|
|
34
|
+
const RunFreeMoveCmdPacks: Function = Forge.AnimFireCommand.RunFreeMoveCmdPacks;
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
GroupType_ActionAssoc,
|
|
38
|
+
ActEventDefine,
|
|
39
|
+
ConditionSetBuilder,
|
|
40
|
+
ActionCmdBuilder,
|
|
41
|
+
StateCmdBuilder,
|
|
42
|
+
CmdPackBuilder,
|
|
43
|
+
FreeMoveAnimClass,
|
|
44
|
+
RunFreeMoveCmdPacks
|
|
45
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* 【模块 export 内容】
|
|
3
|
+
* JsvEnvBlocker: 触发FreeMoveAnimation的 blockerCondition 的全屏碰撞体
|
|
4
|
+
* props说明:
|
|
5
|
+
* top, left, width, height(Number): 关联的div的定位信息
|
|
6
|
+
* topGID(Number): 上边缘响应监听的组id(用于blockerCondition的组参数), 0或者undefined代表不激活这条边的测试
|
|
7
|
+
* bottomGID(Number): 下边缘响应监听的组id
|
|
8
|
+
* leftGID(Number): 左边缘响应监听的组id
|
|
9
|
+
* rightGID(Number): 右边缘响应监听的组id
|
|
10
|
+
*
|
|
11
|
+
-->
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<div
|
|
15
|
+
ref="viewRef"
|
|
16
|
+
:style="{
|
|
17
|
+
top: props.top,
|
|
18
|
+
left: props.left,
|
|
19
|
+
width: props.width,
|
|
20
|
+
height: props.height,
|
|
21
|
+
}"
|
|
22
|
+
>
|
|
23
|
+
<slot />
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script setup>
|
|
28
|
+
import {
|
|
29
|
+
shallowRef,
|
|
30
|
+
toRaw,
|
|
31
|
+
watchEffect,
|
|
32
|
+
onMounted,
|
|
33
|
+
onActivated,
|
|
34
|
+
onDeactivated,
|
|
35
|
+
} from "vue";
|
|
36
|
+
import { Forge } from "@shijiu/jsview/dom/jsv-forge-define";
|
|
37
|
+
|
|
38
|
+
const props = defineProps({
|
|
39
|
+
// (支持reactive)位置信息
|
|
40
|
+
left: {
|
|
41
|
+
type: Number,
|
|
42
|
+
default: 0,
|
|
43
|
+
},
|
|
44
|
+
top: {
|
|
45
|
+
type: Number,
|
|
46
|
+
default: 0,
|
|
47
|
+
},
|
|
48
|
+
width: {
|
|
49
|
+
type: Number,
|
|
50
|
+
require: true,
|
|
51
|
+
},
|
|
52
|
+
height: {
|
|
53
|
+
type: Number,
|
|
54
|
+
require: true,
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
// 四边关联的Group id, 和 blockerCondition的参数对应,若不设置或者为0则此边不触发condition
|
|
58
|
+
topGID: {
|
|
59
|
+
type: Number,
|
|
60
|
+
},
|
|
61
|
+
bottomGID: {
|
|
62
|
+
type: Number,
|
|
63
|
+
},
|
|
64
|
+
leftGID: {
|
|
65
|
+
type: Number,
|
|
66
|
+
},
|
|
67
|
+
rightGID: {
|
|
68
|
+
type: Number,
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
// (支持reactive)是否激活,仍然在渲染树时,非必须可以通过enable关闭以节省CPU开销
|
|
72
|
+
enable: {
|
|
73
|
+
type: Boolean,
|
|
74
|
+
default: true,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// 内部状态变量
|
|
79
|
+
const viewRef = shallowRef(null);
|
|
80
|
+
const viewMounted = reactive({ status: false });
|
|
81
|
+
let sensorRef = null;
|
|
82
|
+
|
|
83
|
+
// 变更四边检测开关和关联id
|
|
84
|
+
watchEffect(() => {
|
|
85
|
+
if (viewMounted.status) {
|
|
86
|
+
if (!isNan(props.TopGID)) {
|
|
87
|
+
sensorRef.ResetTopGID(props.TopGID);
|
|
88
|
+
}
|
|
89
|
+
if (!isNan(props.bottomGID)) {
|
|
90
|
+
sensorRef.ResetBottomGID(props.bottomGID);
|
|
91
|
+
}
|
|
92
|
+
if (!isNan(props.leftGID)) {
|
|
93
|
+
sensorRef.ResetLeftGID(props.leftGID);
|
|
94
|
+
}
|
|
95
|
+
if (!isNan(props.rightGID)) {
|
|
96
|
+
sensorRef.ResetRightGID(props.rightGID);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// 变更enable状态
|
|
102
|
+
watchEffect(() => {
|
|
103
|
+
if (viewMounted.status) {
|
|
104
|
+
sensorRef.Enable(props.enable);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
onMounted(() => {
|
|
109
|
+
console.log("JsvEnvBlocker: on mounted");
|
|
110
|
+
|
|
111
|
+
sensorRef = new Forge.EnvBlockerSensor(
|
|
112
|
+
toRaw(viewRef.value).jsvGetProxyView()
|
|
113
|
+
);
|
|
114
|
+
viewMounted.status = true;
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
onActivated(() => {
|
|
118
|
+
sensorRef.Enable(props.enable);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
onDeactivated(() => {
|
|
122
|
+
sensorRef.Enable(false);
|
|
123
|
+
});
|
|
124
|
+
</script>
|