gemercheung il y a 2 ans
Parent
commit
7779fba118

BIN
packages/qjkankan-editor/public/static/panoassets/images/hotspot/image_place_holder.png


+ 100 - 18
packages/qjkankan-editor/public/static/template/customTooltip.xml

@@ -14,7 +14,7 @@
          );
         ifnot(%2 LE 1, set(hotspot[get(hsp_name)].type, 'text'));
 
-                                        <!-- 其他标签 (0,1,2)-->
+        <!-- 其他标签 (0,1,2)-->
     
         set(hotspot[get(hsp_name)].name,%1);
         set(hotspot[get(hsp_name)].hotspottype,%2);
@@ -33,7 +33,7 @@
         set(hotspot[get(hsp_name)].ondown,dragJQhotspot(););
         set(hotspot[get(hsp_name)].onup,js(__krfn.angle.updateHotSpotData(get(xml.scene),get(name),get(ath),get(atv))));
 
-        txtsplit(%10,'|',fontSize,pos,isHover,borderColor,fillColor,textColor,isShowLine,isTextWrap,lineDirection,textDirection,textNumPerLine,duration,frameNumber);
+        txtsplit(%10,'|',fontSize,pos,isHover,borderColor,fillColor,textColor,isShowLine,isTextWrap,lineDirection,textDirection,textNumPerLine,duration,frameNumber,framewidth);
         set(hotspot[get(hsp_name)].pos,pos);
         txtadd(hotspot[get(hsp_name)].onloaded,"add_tooltip_label();add_tooltip_dot();");
 
@@ -41,8 +41,14 @@
          set(hotspot[get(hsp_name)].height,%8);
          set(hotspot[get(hsp_name)].width,%8);
          <!-- txtadd(hotspot[get(hsp_name)].onloaded,"add_tooltip_label(get(%1));"); -->
-         );
-                                        <!-- 个性化标签(3) -->
+        if(%2 == 2,
+         trace('ser_frame::',get(framewidth));
+         set(hotspot[get(hsp_name)].url,get(iconUrl));
+         set(hotspot[get(hsp_name)].framewidth,get(framewidth));
+         txtadd(hotspot[get(hsp_name)].onloaded,"trace('ser_frame1::',get(frameNumber));do_crop_animation(get(framewidth),get(framewidth),get(frameNumber));"););
+        );
+        
+        <!-- 个性化标签(3) -->
         if(%2 == 3,    
             set(hotspot[get(hsp_name)].height,80);
             set(hotspot[get(hsp_name)].width,1);
@@ -58,6 +64,71 @@
         addhotspot(get(hsp_name));
     </action>
 
+	<action name="do_crop_animation">
+        registerattribute(xframes, calc((imagewidth / %1) BOR 0));
+        registerattribute(yframes, calc((imageheight / %2) BOR 0)); 
+        registerattribute(frames, calc(xframes * yframes));
+        registerattribute(frame, 0); 
+        registerattribute(animatiedOn, 1); 
+        registerattribute(frameRate, calc(1.0 / %3)); 
+        set(crop, '0|0|%1|%2'); 
+        if(frameRate GE 0,
+        setinterval(
+            calc('crop_anim_' + name),
+            get(frameRate),
+            if(loaded, 
+                inc(frame); 
+                if(frame GE frames, if(onlastframe !== null, onlastframe() ); set(frame,0); );
+                mod(xpos,frame, xframes); 
+                div(ypos, frame, xframes);
+                
+                Math.floor(ypos);
+                mul(xpos, %1);
+                mul(ypos, %2); 
+                calc(crop, xpos +'|' + ypos + '|%1|%2');
+                <!-- trace('onging::',get(crop)); -->
+                if(animatiedOn == 0, 
+                 clearinterval(calc('crop_anim_' + name));
+                );
+                if(frames == -1, 
+                 set(crop, '0|0|204|204'); 
+                );,
+                clearinterval(calc('crop_anim_' + name));
+            );
+        );
+        );   
+	</action>
+    
+    <action name="crop_animation_reapply">
+        txtadd(cur,'',%1);
+        tolower(cur, cur);
+        txtadd(frameRate,'',%2);
+        set(frame,0);
+        set(curIn,  calc('crop_anim_' + cur));
+        clearinterval(curIn); 
+        if(get(frameRate) GE 0,
+           setinterval(curIn,
+            get(frameRate),
+            copy(frames, hotspot[get(hsp_name)].frames);
+            copy(xframes, hotspot[get(hsp_name)].xframes);
+            copy(yframes, hotspot[get(hsp_name)].yframes);
+            copy(on, hotspot[get(hsp_name)].on);
+            copy(framewidth, hotspot[get(hsp_name)].framewidth);
+            inc(frame);
+            if(frame GE frames, set(frame,0); );
+            mod(xpos,frame, xframes); 
+            div(ypos, frame, xframes);
+            Math.floor(ypos);
+            mul(xpos, framewidth);
+            mul(ypos,framewidth); 
+            if(animatiedOn == 0, clearinterval(curIn););
+            calc(crop, xpos +'|' + ypos + '|'+framewidth +'|' + framewidth);
+            trace('replay-crop::',get(frames)); 
+            copy(hotspot[get(hsp_name)].crop,crop);
+        );
+        );
+    
+    </action>
 
     <action name="add_tooltip_label">
         txtadd(tooltipname, 'tooltip_', get(name)); 
@@ -130,7 +201,7 @@
         set(layer[get(tooldot)].visible,false);
         set(layer[get(tooldot)].onup,js(__krfn.angle.updateHotSpotData(get(xml.scene),get(hsName),get(ath),get(atv))));
 
-                        <!-- 个性化标签(3) -->
+        <!-- 个性化标签(3) -->
         if(get(hotspottype) == 3,    
             <!-- trace('lineDirection3::',lineDirection);  -->
                             <!-- call(set_label_dir); -->
@@ -228,13 +299,6 @@
    
        copy(lwidth, layer[get(posName)].width);
        copy(lheight, layer[get(posName)].height);
-
-       <!-- copy(pptest, hotspot[get(hp)].pixelwidth); -->
-<!-- 
-       trace('hp::',get(hp),'::label::',get(posName),'::pos::',get(pos));
-
-       trace('tip1::',get(hwidth),'height::',get(hheight));
-       trace('tip2::',get(lwidth),'height::',get(lheight)); -->
    
         if(
             pos == 'top',
@@ -293,6 +357,7 @@
       showlog();
       set(hsp_name,%1); 
       set(hsp_type,%2); 
+      set(dImage,'static/panoassets/images/hotspot/image_place_holder.png');
       txtadd(hsLabel, 'tooltip_', %1); 
       txtadd(hsDot, 'tooldot_', %1); 
       set(hotspot[get(hsp_name)].hotspottitle,%3);
@@ -301,7 +366,7 @@
       copy(layer[get(hsLabel)].borderWidth,false);
       copy(layer[get(hsDot)].borderWidth,false);
       set(hotspot[get(hsp_name)].background,false);
-      txtsplit(%10,'|',fontSize,pos,isHover,borderColor,fillColor,textColor,isShowLine,isTextWrap,lineDirection,textDirection,textNumPerLine,duration,frameNumber);
+      txtsplit(%10,'|',fontSize,pos,isHover,borderColor,fillColor,textColor,isShowLine,isTextWrap,lineDirection,textDirection,textNumPerLine,duration,frameNumber,framewidth);
       txtadd(labelCode, '<div style="display: flex; align-items: center; justify-content: center; position: relative; border: 1px solid ',get(borderColor) ,'; padding: 6px 10px; white-space: pre; border-radius: 5px; background: ',get(fillColor),'">','        <div style="text-align: left; font-size:',get(fontSize),'px; color: ',get(textColor),'; line-height: 1.4;">',%3,'</div>
     </div>');     
       copy(layer[get(hsLabel)].html, labelCode);
@@ -319,12 +384,13 @@
         set(hotspot[get(hsp_name)].width,1);
         set(hotspot[get(hsp_name)].height,80);
         set(hotspot[get(hsp_name)].padding,0);
-        set(layer[get(hsDot)].visible,true);
 
+        
         txtadd(line,'<div style="background-color: ',get(borderColor),';width:1px;height:80px;"></div>');
         txtadd(dot,'<div style="background-color: ',get(borderColor),';width:10px;height:10px;"></div>');
         copy(hotspot[get(hsp_name)].html,line);
         copy(layer[get(hsDot)].html,dot);
+        set(layer[get(hsDot)].visible,true);
         <!-- txtadd(hotspot[get(hsp_name)].onloaded,"add_tooltip_label();add_tooltip_dot();"); -->
    
         set_label_dir(get(hsp_name),get(lineDirection),0);
@@ -336,22 +402,38 @@
         trace('edit2');
         txtadd(iconUrl,'',%4);
         txtreplace(iconUrl,'|',',');
+        trace('iconUrl::',iconUrl);
         set(hotspot[get(hsp_name)].height,%8);
         set(hotspot[get(hsp_name)].width,%8);
 
        delayedcall(0.1,
        txtadd(tooltipname, 'tooltip_', get(hsp_name)); 
-       <!-- trace('de-set_label_pos::',get(layer[get(tooltipname)].pos)); -->
        set_label_pos(get(tooltipname),get(layer[get(tooltipname)].pos));
        );
-        <!-- set_label_pos(get(hsLabel),get(pos)); -->
-        
+       <!-- 序列化类型编辑 -->
+        if(get(hsp_type) == 2, 
+         indexoftxt(index, get(iconUrl), 'image_place_holder.png');
+         trace('frameNumber::',get(frameNumber));
+         trace('framewidth::',get(framewidth));
+         trace('duration::',get(duration));
+         if(get(index) GT -1,set(hotspot[get(hsp_name)].animatiedOn,0); set(hotspot[get(hsp_name)].frames,-1););
+         ifnot(get(index) GT -1, 
+          set(hotspot[get(hsp_name)].animatiedOn,1);
+          set(hotspot[get(hsp_name)].frames,get(frameNumber));
+          calc(frameRate, duration / frameNumber);
+          trace('frameRate::',get(frameRate));
+          set(hotspot[get(hsp_name)].frameRate,get(frameRate));
+          <!-- set(hotspot[get(hsp_name)].on,get(frameRate)); -->
+          crop_animation_reapply(get(hsp_name),get(frameRate),get(frameNumber));
+      
+         );
+        );
+     
         set(hotspot[get(hsp_name)].url,get(iconUrl));
         set(hotspot[get(hsp_name)].rotate,0);
         set(layer[get(hsLabel)].rotate,0);
         set(layer[get(hsDot)].visible,false);
   
-        <!-- copy(hotspot[get(hsp_name)].html,''); -->
        );
    
 

+ 4 - 0
packages/qjkankan-editor/src/core/getSerialFrame.js

@@ -0,0 +1,4 @@
+
+export const getSerialFrame = (imageId) => {
+     const image = doc
+}

+ 13 - 2
packages/qjkankan-editor/src/core/hotspot.js

@@ -3,6 +3,8 @@
  *
  * 
  *  */
+import config from '../config'
+
 const initState = {
     id: "",
     title: "",
@@ -18,7 +20,7 @@ const initState = {
         position: "top",
         isHover: false,
         borderColor: "",
-        fillColor:"",
+        fillColor: "",
         textColor: "",
         isShowLine: "",
         isTextWrap: "",
@@ -27,6 +29,7 @@ const initState = {
         textNumPerLine: "",
         duration: 0,
         frameNumber: 0,
+        frameWidth: 0,
     }
 }
 //基本样式汇总
@@ -46,6 +49,12 @@ const convertBaseStyle = (dest, origin) => {
         dest.style.fillColor = 'rgba(0,0,0,0.8)';
         dest.style.textColor = 'rgba(255,255,255,1)';
     }
+      //custom
+      if (origin && origin.hotspotIconType === 'serial_frame') {
+        dest.style.duration = origin.serialFrameInfo.duration
+        dest.style.frameNumber = origin.serialFrameInfo.frameNumber
+        dest.style.frameWidth = origin.serialFrameInfo.frameWidth
+    }
     //custom
     if (origin && origin.hotspotIconType === 'personalized_tag') {
         dest.style.borderColor = origin.personalizedTagInfo.borderColor;
@@ -88,12 +97,14 @@ const coverImageconPart = (origin) => {
 }
 const coverSerialFrame = (origin) => {
     const duplicate = structuredClone(initState);
+    const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
+    console.log('defaultImage', defaultImage);
     duplicate.id = origin.name;
     duplicate.title = origin.hotspotTitle;
     duplicate.ath = origin.ath;
     duplicate.atv = origin.atv;
     duplicate.type = 2;
-    duplicate.icon = origin.customIconInfo.img || origin.img || '';
+    duplicate.icon = origin.serialFrameInfo.img || defaultImage;
     duplicate.link = origin.link || '';
     duplicate.size = origin.size;
     convertBaseStyle(duplicate, origin)

+ 9 - 3
packages/qjkankan-editor/src/views/hotspot/EditPanel.vue

@@ -434,10 +434,16 @@ export default {
           }
           break;
         case "serial_frame":
+          // if (
+          //   !this.hotspot.serialFrameInfo.img ||
+          //   this.hotspot.serialFrameInfo.frameNumber <= 0 ||
+          //   this.hotspot.serialFrameInfo <= 0
+          // ) {
+          //   return false;
+          // }
+  
           if (
-            !this.hotspot.serialFrameInfo.url ||
-            this.hotspot.serialFrameInfo.frameNumber <= 0 ||
-            this.hotspot.serialFrameInfo <= 0
+            !this.hotspot.serialFrameInfo.img
           ) {
             return false;
           }

+ 107 - 82
packages/qjkankan-editor/src/views/hotspot/hotspotIconType/serial_frame.vue

@@ -5,19 +5,13 @@
       class="add-icon"
       @click="isShowSelectionWindow = true"
     >
-      <img src="@/assets/images/default/hotspot_scene_add.png" alt="">
-      <div class="button-name">{{$i18n.t('hotspot.add_icon')}}</div>
-      <div class="tip">{{$i18n.t('hotspot.add_serial_frame_rule')}}</div>
+      <img src="@/assets/images/default/hotspot_scene_add.png" alt="" />
+      <div class="button-name">{{ $i18n.t("hotspot.add_icon") }}</div>
+      <div class="tip">{{ $i18n.t("hotspot.add_serial_frame_rule") }}</div>
     </button>
 
     <div v-if="hotspot.serialFrameInfo.img" class="icon-selected">
-      <div
-        class="icon-wrap"
-        :style="{
-          height: frameHeight ? frameHeight + 'px' : '',
-          width: frameWidth ? frameWidth + 'px' : '',
-        }"
-      >
+      <div class="icon-wrap">
         <img
           class="serial-frame-preview"
           ref="serial-frame-preview"
@@ -26,20 +20,33 @@
           :style="{
             top: -this.frameHeight * this.currentFrameIdx + 'px',
           }"
-        >
+        />
         <button class="delete-btn" @click="onClickDelete">
-          <img class="normal" src="@/assets/images/icons/close01_normal@2x.png" alt="">
-          <img class="hover" src="@/assets/images/icons/close01_hover@2x.png" alt="">
+          <img
+            class="normal"
+            src="@/assets/images/icons/close01_normal@2x.png"
+            alt=""
+          />
+          <img
+            class="hover"
+            src="@/assets/images/icons/close01_hover@2x.png"
+            alt=""
+          />
         </button>
       </div>
       <div class="right-wrap">
-        <button class="select-icon ui-button submit" @click="isShowSelectionWindow = true">{{$i18n.t('hotspot.select_icon')}}</button>
-        <div class="tip">{{$i18n.t('hotspot.add_serial_frame_rule')}}</div>
+        <div class="tip">{{ $i18n.t("hotspot.add_serial_frame_rule") }}</div>
+        <button
+          class="select-icon ui-button submit"
+          @click="isShowSelectionWindow = true"
+        >
+          {{ $i18n.t("hotspot.select_icon") }}
+        </button>
       </div>
     </div>
 
     <div class="frame-num-setting serial-setting-item">
-      <div class="remark">{{$i18n.t('hotspot.frame_total_number')}}</div>
+      <div class="remark">{{ $i18n.t("hotspot.frame_total_number") }}</div>
       <div class="right-wrap">
         <input
           v-model.trim.number="hotspot.serialFrameInfo.frameNumber"
@@ -48,12 +55,12 @@
           min="2"
           step="1"
         />
-        <span>{{$i18n.t('common.frame')}}</span>
+        <span>{{ $i18n.t("common.frame") }}</span>
       </div>
     </div>
 
     <div class="duration-setting serial-setting-item">
-      <div class="remark">{{$i18n.t('hotspot.frame_duration')}}</div>
+      <div class="remark">{{ $i18n.t("hotspot.frame_duration") }}</div>
       <div class="right-wrap">
         <input
           v-model.trim.number="hotspot.serialFrameInfo.duration"
@@ -61,7 +68,7 @@
           type="number"
           min="0"
         />
-        <span>{{$i18n.t('common.second')}}</span>
+        <span>{{ $i18n.t("common.second") }}</span>
       </div>
     </div>
 
@@ -88,36 +95,29 @@ export default {
   data() {
     return {
       isShowSelectionWindow: false,
-
       frameHeight: 0,
       frameWidth: 0,
       currentFrameIdx: 0,
       intervalId: null,
-    }
+    };
   },
   computed: {
     ...mapGetters({
-      hotspot: 'hotspot',
+      hotspot: "hotspot",
     }),
   },
   watch: {
-    'hotspot.serialFrameInfo.frameNumber': {
+    "hotspot.serialFrameInfo.img": {
       handler(vNew) {
-        if (vNew >= 2 && Number.isInteger(vNew)) {
-          this.computeFrameHeight()
+        if (vNew && vNew.length > 0) {
+          this.calcFrameData();
         }
       },
       immediate: true,
     },
     frameHeight: {
       handler() {
-        this.playSerialFrame()
-      },
-      immediate: true,
-    },
-    'hotspot.serialFrameInfo.duration': {
-      handler() {
-        this.playSerialFrame()
+        // this.playSerialFrame()
       },
       immediate: true,
     },
@@ -125,68 +125,78 @@ export default {
   methods: {
     onFrameNumberInputBlur() {
       if (this.hotspot.serialFrameInfo.frameNumber < 2) {
-        this.hotspot.serialFrameInfo.frameNumber = 2
+        this.hotspot.serialFrameInfo.frameNumber = 2;
       } else {
-        this.hotspot.serialFrameInfo.frameNumber = Math.round(this.hotspot.serialFrameInfo.frameNumber)
+        this.hotspot.serialFrameInfo.frameNumber = Math.round(
+          this.hotspot.serialFrameInfo.frameNumber
+        );
       }
     },
     onDurationInputBlur() {
       if (this.hotspot.serialFrameInfo.duration < 0) {
-        this.hotspot.serialFrameInfo.duration = 0
+        this.hotspot.serialFrameInfo.duration = 0;
       }
     },
     handleSubmitFromMaterialSelector(data) {
-      this.isShowSelectionWindow = false
-      this.hotspot.serialFrameInfo.img = data[0].icon
-
-      this.computeFrameHeight()
+      this.isShowSelectionWindow = false;
+      this.hotspot.serialFrameInfo.img = data[0].icon;
+      this.computeFrameHeight();
     },
     computeFrameHeight() {
-      this.frameHeight = 0
-      this.frameWidth = 0
+      this.frameHeight = 0;
+      this.frameWidth = 0;
 
       setTimeout(() => {
         try {
-          this.frameHeight = this.$refs['serial-frame-preview'].clientHeight / this.hotspot.serialFrameInfo.frameNumber
-          if (this.frameHeight > 110) {
-            this.frameWidth = 110 * 110 / this.frameHeight
-            this.frameHeight = 110
-          }
-        } catch(e) {
-          this.frameHeight = 0
-          this.frameWidth = 0
+          this.frameHeight = this.$refs["serial-frame-preview"].clientHeight;
+          this.frameWidth = this.$refs["serial-frame-preview"].clientWidth;
+        } catch (e) {
+          this.frameHeight = 0;
+          this.frameWidth = 0;
         }
       }, 200);
     },
-    playSerialFrame() {
-      clearInterval(this.intervalId)
-      this.currentFrameIdx = 0
-      if (!this.hotspot.serialFrameInfo.img || this.frameHeight <= 0 || this.hotspot.serialFrameInfo.duration <= 0) {
-        return
-      }
-      this.intervalId = setInterval(() => {
-        this.currentFrameIdx++
-        if (this.currentFrameIdx >= this.hotspot.serialFrameInfo.frameNumber) {
-          this.currentFrameIdx = 0
+    calcFrameData() {
+      setTimeout(() => {
+        try {
+          this.frameHeight = this.$refs["serial-frame-preview"].naturalHeight;
+          this.frameWidth = this.$refs["serial-frame-preview"].naturalWidth;
+          console.log("this.frameWidth", this.frameWidth);
+          if (this.frameHeight && this.frameWidth) {
+            const frameNumber = Number(this.frameHeight / this.frameWidth);
+
+            if (!this.hotspot.serialFrameInfo.frameNumber) {
+              this.hotspot.serialFrameInfo.frameNumber =
+                Math.ceil(frameNumber) || 0;
+            }
+
+            console.log("frameNumber", Math.ceil(frameNumber));
+            this.hotspot.serialFrameInfo.duration = 1;
+            this.hotspot.serialFrameInfo.frameWidth = this.frameWidth;
+          }
+        } catch (e) {
+          this.frameHeight = 0;
+          this.frameWidth = 0;
         }
-      }, this.hotspot.serialFrameInfo.duration / this.hotspot.serialFrameInfo.frameNumber * 1000);
+      }, 200);
     },
     onClickDelete() {
-      this.hotspot.serialFrameInfo.img = ''
-      clearInterval(this.intervalId)
-      this.frameHeight = 0
-      this.frameWidth = 0
-    }
+      this.hotspot.serialFrameInfo.img = "";
+      clearInterval(this.intervalId);
+      this.frameHeight = 0;
+      this.frameWidth = 0;
+      this.hotspot.serialFrameInfo.duration = 0;
+      this.hotspot.serialFrameInfo.frameNumber = 0;
+    },
   },
-  mounted() {
-  }
-}
+  mounted() {},
+};
 </script>
 
 <style lang="less" scoped>
 .hotspot-icon-serial-frame {
   width: 100%;
-  
+
   > button.add-icon {
     width: 100%;
     height: 110px;
@@ -194,7 +204,7 @@ export default {
     flex-direction: column;
     justify-content: center;
     align-items: center;
-    background: #1A1B1D;
+    background: #1a1b1d;
     border-radius: 2px;
     border: 1px solid #404040;
     cursor: pointer;
@@ -205,7 +215,7 @@ export default {
     }
     > .button-name {
       font-size: 14px;
-      color: #0076F6;
+      color: #0076f6;
       margin-bottom: 4px;
     }
     > .tip {
@@ -216,16 +226,24 @@ export default {
 
   > .icon-selected {
     display: flex;
-    justify-content: space-between;
+    flex-direction: column;
+    justify-content: flex-start;
     > .icon-wrap {
-      width: 110px;
-      height: 110px;
+      width: 228px;
+      height: 180px;
       position: relative;
       overflow: hidden;
       border-radius: 2px;
+      display: flex;
+      justify-content: center;
+      border: 1px solid rgba(151, 151, 151, 0.2);
+      background: #1a1b1d;
+      margin-bottom: 10px;
       > .serial-frame-preview {
         position: absolute;
-        width: 100%;
+        width: auto;
+
+        height: 100%;
       }
       > .delete-btn {
         position: absolute;
@@ -258,13 +276,20 @@ export default {
       }
     }
     > .right-wrap {
-      width: 108px;
+      width: 100%;
+      display: flex;
+      justify-content: center;
+      flex-direction: row;
+
       > button.select-icon {
         margin-bottom: 14px;
+        font-size: 12px;
+        min-width: 60px;
+        padding: 0 12px;
       }
       > .tip {
-        font-size: 14px;
-        color: rgba(255,255,255,0.3);
+        font-size: 12px;
+        color: rgba(255, 255, 255, 0.3);
       }
     }
   }
@@ -275,7 +300,7 @@ export default {
     align-items: center;
     &:first-of-type {
       margin-top: 16px;
-      margin-bottom: 10px;;
+      margin-bottom: 10px;
     }
     > .remark {
       font-size: 14px;
@@ -288,11 +313,11 @@ export default {
       > input {
         width: 60px;
         height: 36px;
-        background: #1A1B1D;
+        background: #1a1b1d;
         border-radius: 2px;
         border: 1px solid #404040;
         font-size: 14px;
-        color: #FFFFFF;
+        color: #ffffff;
         margin-right: 10px;
         padding-left: 16px;
         &:focus {
@@ -306,4 +331,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 1 - 1
packages/qjkankan-view/public/showviewer/lib/krpano/skin/vtourskin.xml

@@ -1151,7 +1151,7 @@
         set(hotspot[get(schp_name)].onup,js(__sdk.Tags..updateHotSpotData(get(xml.scene),get(name),get(ath),get(atv),"imgtext")));
       );
 
-			txtadd(hotspot[get(schp_name)].onloaded,"do_crop_animation(84,84, 40);");
+	  txtadd(hotspot[get(schp_name)].onloaded,"do_crop_animation(84,84, 40);");
 			
       txtadd(hotspot[get(schp_name)].onloaded,"add_all_the_time_tooltip(hotspot[get(name)].hotspottitle);");
       set(hotspot[get(schp_name)].onhover,null);