|
|
@@ -6,7 +6,10 @@
|
|
|
preserveAspectRatio="none"
|
|
|
x="0px"
|
|
|
y="0px"
|
|
|
- width="360px" height="204" style="padding:5px" viewBox="500 320 1000 500"
|
|
|
+ width="360px"
|
|
|
+ height="204"
|
|
|
+ style="padding: 5px"
|
|
|
+ viewBox="500 320 1000 500"
|
|
|
>
|
|
|
<defs>
|
|
|
<linearGradient id="Gradient_1" gradientUnits="userSpaceOnUse" x1="-961.8" y1="-242.45" x2="-961.8" y2="-242.45" spreadMethod="pad">
|
|
|
@@ -1187,126 +1190,126 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
- import { onMounted, defineExpose, withDefaults, defineProps } from 'vue';
|
|
|
- import { useSvgAnimation } from '/@/hooks/vent/useSvgAnimation';
|
|
|
+import { onMounted, defineExpose, withDefaults, defineProps } from 'vue';
|
|
|
+import { useSvgAnimation } from '/@/hooks/vent/useSvgAnimation';
|
|
|
|
|
|
- const props = withDefaults(
|
|
|
- defineProps<{
|
|
|
- /** 组件唯一标识符,提供后可以确保多个组件复用时的元素定位依旧准确 */
|
|
|
- identify?: number;
|
|
|
- }>(),
|
|
|
- { identify: -1 }
|
|
|
- );
|
|
|
+const props = withDefaults(
|
|
|
+ defineProps<{
|
|
|
+ /** 组件唯一标识符,提供后可以确保多个组件复用时的元素定位依旧准确 */
|
|
|
+ identify?: number;
|
|
|
+ }>(),
|
|
|
+ { identify: -1 }
|
|
|
+);
|
|
|
|
|
|
- // 元素信息(常量数据,使用Map)
|
|
|
- const elementInfo = new Map([
|
|
|
- [
|
|
|
- `anim_FengMen_SiShanLing_Men_L_0_Layer0_0_FILL_0${props.identify}`,
|
|
|
- {
|
|
|
- key: 'FengMen_SiShanLing_Men_L_0_Layer0_0_FILL',
|
|
|
- transforms: [
|
|
|
- 'matrix( 0.29864501953125, 0, 0, 0.29864501953125, 852.6,507.75) ',
|
|
|
- 'matrix( 0.30267333984375, 0.0030975341796875, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
- 'matrix( 0.3066864013671875, 0.0063018798828125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3106536865234375, 0.00958251953125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3145904541015625, 0.012939453125, 0, 0.2986297607421875, 852.6,507.75) ',
|
|
|
- 'matrix( 0.318511962890625, 0.0163726806640625, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
- 'matrix( 0.3223724365234375, 0.0198974609375, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3261871337890625, 0.0235137939453125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.329986572265625, 0.027191162109375, 0, 0.2986297607421875, 852.65,507.75) ',
|
|
|
- 'matrix( 0.333740234375, 0.0309600830078125, 0, 0.2986297607421875, 852.65,507.75) ',
|
|
|
- 'matrix( 0.337432861328125, 0.0348052978515625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.341094970703125, 0.038726806640625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3447113037109375, 0.042724609375, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
- 'matrix( 0.3482818603515625, 0.04681396484375, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
- 'matrix( 0.3517913818359375, 0.0509796142578125, 0, 0.2986297607421875, 852.55,507.75) ',
|
|
|
- 'matrix( 0.355255126953125, 0.055206298828125, 0, 0.2986297607421875, 852.6,507.75) ',
|
|
|
- 'matrix( 0.358673095703125, 0.059539794921875, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
- 'matrix( 0.3620452880859375, 0.0639190673828125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3653564453125, 0.068389892578125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3686065673828125, 0.0729217529296875, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3718109130859375, 0.077545166015625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.374969482421875, 0.0822296142578125, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
- 'matrix( 0.3780670166015625, 0.0869903564453125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.381103515625, 0.091827392578125, 0, 0.2986297607421875, 852.55,507.8) ',
|
|
|
- 'matrix( 0.3840789794921875, 0.0967254638671875, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.386993408203125, 0.1016998291015625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.38983154296875, 0.10675048828125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3926239013671875, 0.1118621826171875, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.3953399658203125, 0.1170501708984375, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
- 'matrix( 0.39801025390625, 0.122314453125, 0, 0.29864501953125, 852.6,507.75) ',
|
|
|
- ],
|
|
|
- opacity: [],
|
|
|
- },
|
|
|
- ],
|
|
|
- [
|
|
|
- `anim_FengMen_SiShanLing_Men_R_0_Layer0_0_FILL_0${props.identify}`,
|
|
|
- {
|
|
|
- key: 'FengMen_SiShanLing_Men_R_0_Layer0_0_FILL',
|
|
|
- transforms: [
|
|
|
- 'matrix( 0.298553466796875, 0, 0, 0.298553466796875, 893.2,498.6) ',
|
|
|
- 'matrix( 0.3026885986328125, 0.0033416748046875, 0, 0.2985382080078125, 892.7,498.15) ',
|
|
|
- 'matrix( 0.306793212890625, 0.0067901611328125, 0, 0.2985382080078125, 892.15,497.7) ',
|
|
|
- 'matrix( 0.31085205078125, 0.0103302001953125, 0, 0.2985382080078125, 891.6,497.25) ',
|
|
|
- 'matrix( 0.3148956298828125, 0.0139617919921875, 0, 0.2985382080078125, 891.15,496.8) ',
|
|
|
- 'matrix( 0.3188629150390625, 0.0176849365234375, 0, 0.2985382080078125, 890.6,496.35) ',
|
|
|
- 'matrix( 0.3227996826171875, 0.0214996337890625, 0, 0.2985382080078125, 890.15,495.85) ',
|
|
|
- 'matrix( 0.326690673828125, 0.025390625, 0, 0.2985382080078125, 889.65,495.35) ',
|
|
|
- 'matrix( 0.3305511474609375, 0.029388427734375, 0, 0.2985382080078125, 889.15,494.85) ',
|
|
|
- 'matrix( 0.3343353271484375, 0.0334625244140625, 0, 0.2985382080078125, 888.65,494.35) ',
|
|
|
- 'matrix( 0.3380889892578125, 0.037628173828125, 0, 0.2985382080078125, 888.2,493.8) ',
|
|
|
- 'matrix( 0.3417816162109375, 0.0418701171875, 0, 0.2985382080078125, 887.7,493.25) ',
|
|
|
- 'matrix( 0.345428466796875, 0.0462188720703125, 0, 0.2985382080078125, 887.3,492.7) ',
|
|
|
- 'matrix( 0.3490142822265625, 0.0506439208984375, 0, 0.2985382080078125, 886.8,492.15) ',
|
|
|
- 'matrix( 0.3525543212890625, 0.0551605224609375, 0, 0.2985382080078125, 886.35,491.6) ',
|
|
|
- 'matrix( 0.3560028076171875, 0.05975341796875, 0, 0.2985382080078125, 885.95,491.05) ',
|
|
|
- 'matrix( 0.3594207763671875, 0.064422607421875, 0, 0.2985382080078125, 885.5,490.45) ',
|
|
|
- 'matrix( 0.3627777099609375, 0.0691986083984375, 0, 0.2985382080078125, 885.1,489.85) ',
|
|
|
- 'matrix( 0.3660736083984375, 0.07403564453125, 0, 0.2985382080078125, 884.7,489.25) ',
|
|
|
- 'matrix( 0.3693084716796875, 0.0789642333984375, 0, 0.2985382080078125, 884.3,488.6) ',
|
|
|
- 'matrix( 0.372467041015625, 0.0839691162109375, 0, 0.2985382080078125, 883.9,488) ',
|
|
|
- 'matrix( 0.3755645751953125, 0.08905029296875, 0, 0.2985382080078125, 883.45,487.3) ',
|
|
|
- 'matrix( 0.37860107421875, 0.094207763671875, 0, 0.2985382080078125, 883.1,486.65) ',
|
|
|
- 'matrix( 0.381561279296875, 0.099456787109375, 0, 0.2985382080078125, 882.7,486) ',
|
|
|
- 'matrix( 0.38446044921875, 0.1047821044921875, 0, 0.2985382080078125, 882.35,485.35) ',
|
|
|
- 'matrix( 0.38726806640625, 0.11016845703125, 0, 0.2985382080078125, 882,484.65) ',
|
|
|
- 'matrix( 0.3900146484375, 0.1156463623046875, 0, 0.2985382080078125, 881.65,483.95) ',
|
|
|
- 'matrix( 0.3926849365234375, 0.121185302734375, 0, 0.2985382080078125, 881.3,483.25) ',
|
|
|
- 'matrix( 0.395294189453125, 0.126800537109375, 0, 0.2985382080078125, 880.95,482.55) ',
|
|
|
- 'matrix( 0.3978118896484375, 0.13250732421875, 0, 0.298553466796875, 880.55,481.7) ',
|
|
|
- ],
|
|
|
- opacity: [],
|
|
|
- },
|
|
|
- ],
|
|
|
- ]);
|
|
|
+// 元素信息(常量数据,使用Map)
|
|
|
+const elementInfo = new Map([
|
|
|
+ [
|
|
|
+ `anim_FengMen_SiShanLing_Men_L_0_Layer0_0_FILL_0${props.identify}`,
|
|
|
+ {
|
|
|
+ key: 'FengMen_SiShanLing_Men_L_0_Layer0_0_FILL',
|
|
|
+ transforms: [
|
|
|
+ 'matrix( 0.29864501953125, 0, 0, 0.29864501953125, 852.6,507.75) ',
|
|
|
+ 'matrix( 0.30267333984375, 0.0030975341796875, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
+ 'matrix( 0.3066864013671875, 0.0063018798828125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3106536865234375, 0.00958251953125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3145904541015625, 0.012939453125, 0, 0.2986297607421875, 852.6,507.75) ',
|
|
|
+ 'matrix( 0.318511962890625, 0.0163726806640625, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
+ 'matrix( 0.3223724365234375, 0.0198974609375, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3261871337890625, 0.0235137939453125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.329986572265625, 0.027191162109375, 0, 0.2986297607421875, 852.65,507.75) ',
|
|
|
+ 'matrix( 0.333740234375, 0.0309600830078125, 0, 0.2986297607421875, 852.65,507.75) ',
|
|
|
+ 'matrix( 0.337432861328125, 0.0348052978515625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.341094970703125, 0.038726806640625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3447113037109375, 0.042724609375, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
+ 'matrix( 0.3482818603515625, 0.04681396484375, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
+ 'matrix( 0.3517913818359375, 0.0509796142578125, 0, 0.2986297607421875, 852.55,507.75) ',
|
|
|
+ 'matrix( 0.355255126953125, 0.055206298828125, 0, 0.2986297607421875, 852.6,507.75) ',
|
|
|
+ 'matrix( 0.358673095703125, 0.059539794921875, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
+ 'matrix( 0.3620452880859375, 0.0639190673828125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3653564453125, 0.068389892578125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3686065673828125, 0.0729217529296875, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3718109130859375, 0.077545166015625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.374969482421875, 0.0822296142578125, 0, 0.2986297607421875, 852.65,507.8) ',
|
|
|
+ 'matrix( 0.3780670166015625, 0.0869903564453125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.381103515625, 0.091827392578125, 0, 0.2986297607421875, 852.55,507.8) ',
|
|
|
+ 'matrix( 0.3840789794921875, 0.0967254638671875, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.386993408203125, 0.1016998291015625, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.38983154296875, 0.10675048828125, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3926239013671875, 0.1118621826171875, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.3953399658203125, 0.1170501708984375, 0, 0.2986297607421875, 852.6,507.8) ',
|
|
|
+ 'matrix( 0.39801025390625, 0.122314453125, 0, 0.29864501953125, 852.6,507.75) ',
|
|
|
+ ],
|
|
|
+ opacity: [],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ `anim_FengMen_SiShanLing_Men_R_0_Layer0_0_FILL_0${props.identify}`,
|
|
|
+ {
|
|
|
+ key: 'FengMen_SiShanLing_Men_R_0_Layer0_0_FILL',
|
|
|
+ transforms: [
|
|
|
+ 'matrix( 0.298553466796875, 0, 0, 0.298553466796875, 893.2,498.6) ',
|
|
|
+ 'matrix( 0.3026885986328125, 0.0033416748046875, 0, 0.2985382080078125, 892.7,498.15) ',
|
|
|
+ 'matrix( 0.306793212890625, 0.0067901611328125, 0, 0.2985382080078125, 892.15,497.7) ',
|
|
|
+ 'matrix( 0.31085205078125, 0.0103302001953125, 0, 0.2985382080078125, 891.6,497.25) ',
|
|
|
+ 'matrix( 0.3148956298828125, 0.0139617919921875, 0, 0.2985382080078125, 891.15,496.8) ',
|
|
|
+ 'matrix( 0.3188629150390625, 0.0176849365234375, 0, 0.2985382080078125, 890.6,496.35) ',
|
|
|
+ 'matrix( 0.3227996826171875, 0.0214996337890625, 0, 0.2985382080078125, 890.15,495.85) ',
|
|
|
+ 'matrix( 0.326690673828125, 0.025390625, 0, 0.2985382080078125, 889.65,495.35) ',
|
|
|
+ 'matrix( 0.3305511474609375, 0.029388427734375, 0, 0.2985382080078125, 889.15,494.85) ',
|
|
|
+ 'matrix( 0.3343353271484375, 0.0334625244140625, 0, 0.2985382080078125, 888.65,494.35) ',
|
|
|
+ 'matrix( 0.3380889892578125, 0.037628173828125, 0, 0.2985382080078125, 888.2,493.8) ',
|
|
|
+ 'matrix( 0.3417816162109375, 0.0418701171875, 0, 0.2985382080078125, 887.7,493.25) ',
|
|
|
+ 'matrix( 0.345428466796875, 0.0462188720703125, 0, 0.2985382080078125, 887.3,492.7) ',
|
|
|
+ 'matrix( 0.3490142822265625, 0.0506439208984375, 0, 0.2985382080078125, 886.8,492.15) ',
|
|
|
+ 'matrix( 0.3525543212890625, 0.0551605224609375, 0, 0.2985382080078125, 886.35,491.6) ',
|
|
|
+ 'matrix( 0.3560028076171875, 0.05975341796875, 0, 0.2985382080078125, 885.95,491.05) ',
|
|
|
+ 'matrix( 0.3594207763671875, 0.064422607421875, 0, 0.2985382080078125, 885.5,490.45) ',
|
|
|
+ 'matrix( 0.3627777099609375, 0.0691986083984375, 0, 0.2985382080078125, 885.1,489.85) ',
|
|
|
+ 'matrix( 0.3660736083984375, 0.07403564453125, 0, 0.2985382080078125, 884.7,489.25) ',
|
|
|
+ 'matrix( 0.3693084716796875, 0.0789642333984375, 0, 0.2985382080078125, 884.3,488.6) ',
|
|
|
+ 'matrix( 0.372467041015625, 0.0839691162109375, 0, 0.2985382080078125, 883.9,488) ',
|
|
|
+ 'matrix( 0.3755645751953125, 0.08905029296875, 0, 0.2985382080078125, 883.45,487.3) ',
|
|
|
+ 'matrix( 0.37860107421875, 0.094207763671875, 0, 0.2985382080078125, 883.1,486.65) ',
|
|
|
+ 'matrix( 0.381561279296875, 0.099456787109375, 0, 0.2985382080078125, 882.7,486) ',
|
|
|
+ 'matrix( 0.38446044921875, 0.1047821044921875, 0, 0.2985382080078125, 882.35,485.35) ',
|
|
|
+ 'matrix( 0.38726806640625, 0.11016845703125, 0, 0.2985382080078125, 882,484.65) ',
|
|
|
+ 'matrix( 0.3900146484375, 0.1156463623046875, 0, 0.2985382080078125, 881.65,483.95) ',
|
|
|
+ 'matrix( 0.3926849365234375, 0.121185302734375, 0, 0.2985382080078125, 881.3,483.25) ',
|
|
|
+ 'matrix( 0.395294189453125, 0.126800537109375, 0, 0.2985382080078125, 880.95,482.55) ',
|
|
|
+ 'matrix( 0.3978118896484375, 0.13250732421875, 0, 0.298553466796875, 880.55,481.7) ',
|
|
|
+ ],
|
|
|
+ opacity: [],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+]);
|
|
|
|
|
|
- const { animationElements, triggerAnimation } = useSvgAnimation(elementInfo);
|
|
|
+const { animationElements, triggerAnimation } = useSvgAnimation(elementInfo);
|
|
|
|
|
|
- // 初始化元素引用
|
|
|
- onMounted(() => {
|
|
|
- elementInfo.forEach((__, elementId) => {
|
|
|
- const el = document.querySelector(`[data-anim-id="${elementId}"]`);
|
|
|
- if (el) {
|
|
|
- animationElements.set(elementId, el as HTMLElement);
|
|
|
- }
|
|
|
- });
|
|
|
+// 初始化元素引用
|
|
|
+onMounted(() => {
|
|
|
+ elementInfo.forEach((__, elementId) => {
|
|
|
+ const el = document.querySelector(`[data-anim-id="${elementId}"]`);
|
|
|
+ if (el) {
|
|
|
+ animationElements.set(elementId, el as HTMLElement);
|
|
|
+ }
|
|
|
});
|
|
|
+});
|
|
|
|
|
|
- /** 根据SVG的使用场景播放动画 */
|
|
|
- function animate(door1, door2, door3) {
|
|
|
- // 在SVG图片中,找到需要动起来的元素(类似<use xlink:href="#RE_L_0_Layer0_0_FILL"></use>),并填入id即可控制该元素的动画(如有)
|
|
|
- const open = door1 || door2 || door3;
|
|
|
- triggerAnimation(['FengMen_SiShanLing_Men_L_0_Layer0_0_FILL', 'FengMen_SiShanLing_Men_R_0_Layer0_0_FILL'], !open);
|
|
|
- }
|
|
|
+/** 根据SVG的使用场景播放动画 */
|
|
|
+function animate(door1, door2, door3) {
|
|
|
+ // 在SVG图片中,找到需要动起来的元素(类似<use xlink:href="#RE_L_0_Layer0_0_FILL"></use>),并填入id即可控制该元素的动画(如有)
|
|
|
+ const open = door1 || door2 || door3;
|
|
|
+ triggerAnimation(['FengMen_SiShanLing_Men_L_0_Layer0_0_FILL', 'FengMen_SiShanLing_Men_R_0_Layer0_0_FILL'], !open);
|
|
|
+}
|
|
|
|
|
|
- // 导出方法以便外部调用
|
|
|
- defineExpose({
|
|
|
- animate,
|
|
|
- });
|
|
|
+// 导出方法以便外部调用
|
|
|
+defineExpose({
|
|
|
+ animate,
|
|
|
+});
|
|
|
</script>
|
|
|
<style scoped>
|
|
|
- /* 可以添加一些基础样式 */
|
|
|
- [data-anim-id] {
|
|
|
- transition: transform 3s;
|
|
|
- }
|
|
|
+/* 可以添加一些基础样式 */
|
|
|
+[data-anim-id] {
|
|
|
+ transition: transform 3s;
|
|
|
+}
|
|
|
</style>
|