gemercheung 2 سال پیش
والد
کامیت
b96a3fa33c

+ 50 - 26
packages/qjkankan-editor/public/static/template/customTooltip.xml

@@ -31,7 +31,7 @@
         set(hotspot[get(hsp_name)].border,false);
         set(hotspot[get(hsp_name)].onclick,'js(__krfn.utils.linkopen(%7,%1));');
         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))));
+        set(hotspot[get(hsp_name)].onup,js(console.log('0');__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,framewidth);
         set(hotspot[get(hsp_name)].pos,pos);
@@ -40,15 +40,17 @@
        if(%2 LE 2,
          set(hotspot[get(hsp_name)].height,%8);
          set(hotspot[get(hsp_name)].width,%8);
+         set(hotspot[get(hsp_name)].crop,'');
          <!-- txtadd(hotspot[get(hsp_name)].onloaded,"add_tooltip_label(get(%1));"); -->
         if(%2 == 2,
          trace('ser_frame::',get(framewidth));
          set(hotspot[get(hsp_name)].url,get(iconUrl));
          set(hotspot[get(hsp_name)].framewidth,get(framewidth));
          set(hotspot[get(hsp_name)].frames,get(frameNumber));
+
          crop_animation_r_stop(get(hsp_name));
 
-         txtadd(hotspot[get(hsp_name)].onloaded,"trace('ser_frame1::',get(frameNumber));do_crop_animation(get(framewidth),get(framewidth),get(frameNumber));"););
+         txtadd(hotspot[get(hsp_name)].onloaded,"trace('onloaded::',get(frameNumber),get(framewidth));do_crop_animation(get(framewidth),get(framewidth),get(frameNumber));"););
         );
         
         <!-- 个性化标签(3) -->
@@ -76,7 +78,6 @@
         registerattribute(frameRate, calc(1.0 / %3)); 
         set(crop, '0|0|%1|%2'); 
         clearinterval(calc('crop_anim_' + name));
-  
         if(frameRate GE 0,
         setinterval(
             calc('crop_anim_' + name),
@@ -86,7 +87,7 @@
                 if(frame GE frames, if(onlastframe !== null, onlastframe() ); set(frame,0); );
                 mod(xpos,frame, xframes); 
                 div(ypos, frame, xframes);
-                trace('onging::',get(frames));
+                <!-- trace('onging::',get(frames)); -->
                 Math.floor(ypos);
                 mul(xpos, %1);
                 mul(ypos, %2); 
@@ -95,9 +96,7 @@
                 if(animatiedOn == 0, 
                  clearinterval(calc('crop_anim_' + name));
                 );
-                if(frames == -1, 
-                 set(crop, '0|0|204|204'); 
-                );,
+,
                 clearinterval(calc('crop_anim_' + name));
             );
         );
@@ -111,30 +110,37 @@
     </action>
     
     <action name="crop_animation_reapply">
-        set(cur,%1);
+        txtadd(cur,'',%1);
         tolower(cur, cur);
         txtadd(frameRate,'',%2);
+        txtadd(framewidth,'',%3);
+        txtadd(frameNumber,'',%4);
         copy(frames, hotspot[get(cur)].frames);
         copy(xframes, hotspot[get(cur)].xframes);
         copy(yframes, hotspot[get(cur)].yframes);
+        copy(animatiedOn, hotspot[get(cur)].animatiedOn);
         set(frame,0);
         set(curIn,  calc('crop_anim_r_' + cur));
+
         clearinterval(curIn); 
         if(get(frameRate) GE 0,
            setinterval(curIn,
             get(frameRate),
             inc(frame);
             copy(on, hotspot[get(cur)].on);
-            copy(framewidth, hotspot[get(cur)].framewidth);
-            <!-- trace('replay-crop::',get(frames));  -->
+         
             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););
+            trace('frame-1::',get(animatiedOn));
             calc(crop, xpos +'|' + ypos + '|'+framewidth +'|' + framewidth);
+            if(frames == -1, 
+                 copy(hotspot[get(hsp_name)].crop,'0|0|204|204');
+            );
+            <!-- trace('replaying::',get(frame));  -->
             copy(hotspot[get(hsp_name)].crop,crop);
         );
         );
@@ -163,7 +169,7 @@
         set(layer[get(tooltipname)].ondown,'dragJQlayer();');
         
         set(layer[get(tooltipname)].onclick,JQlayerClick);
-        set(layer[get(tooltipname)].onup,js(__krfn.angle.updateHotSpotData(get(xml.scene),get(hsName),get(ath),get(atv))));
+        set(layer[get(tooltipname)].onup,js(console.log('1');__krfn.angle.updateHotSpotData(get(xml.scene),get(hsName),get(ath),get(atv))));
                                         <!-- set(hotspot[get(hsp_name)].onup,js(__krfn.angle.updateHotSpotData(get(xml.scene),get(name),get(ath),get(atv)))); -->
         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;">',get(hotspottitle),'</div>
         </div>'); 
@@ -210,7 +216,7 @@
         set(layer[get(tooldot)].onclick,JQlayerClick);
         set(layer[get(tooldot)].ondown,'dragJQlayer();');
         set(layer[get(tooldot)].visible,false);
-        set(layer[get(tooldot)].onup,js(__krfn.angle.updateHotSpotData(get(xml.scene),get(hsName),get(ath),get(atv))));
+        set(layer[get(tooldot)].onup,js(console.log('2');__krfn.angle.updateHotSpotData(get(xml.scene),get(hsName),get(ath),get(atv))));
 
         <!-- 个性化标签(3) -->
         if(get(hotspottype) == 3,    
@@ -242,9 +248,10 @@
         );
         if(
              get(lineDirection) == 'right-center',
-             if(get(dir)==0,set(hotspot[get(dirItem)].rotate,90));
+             if(get(dir)==0,set(hotspot[get(dirItem)].rotate,90););
              <!-- if(get(dir)==1,set(layer[get(dirItem)].rotate,-90);set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,-80)); -->
              if(get(dir)==1,
+                trace('labelWidth::',labelWidth);
                 set(layer[get(dirItem)].rotate,-90);
                 set(layer[get(dirItem)].x,0);
                 sub(labelWidth,25);
@@ -362,6 +369,11 @@
         removelayer(get(delHotspotLabel));
         removelayer(get(delHotspotdot));
     </action>
+    
+    <action name="cancelJQHotspot">
+        set(canclHotspot,%1);
+        crop_animation_r_stop(%1);
+    </action>
 
     <!-- 编辑热点 -->
     <action name="editJQHotspot">
@@ -378,19 +390,26 @@
       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,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>
+      txtadd(labelCode, '<div style="min-height:30px; 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);
       copy(layer[get(hsLabel)].pos, pos);
       trace('editJQHotspot',%1,'::type::',%3);
+
+      if(%3 == '', 
+        trace('title-empty');
+        set(layer[get(hsLabel)].height,12));
       
-        if(%3 == '', set(layer[get(hsLabel)].height,12););
-        ifnot(%3 == '', set(layer[get(hsLabel)].height,30););
+        <!-- if(%3 == '', 
+         trace('title-empty');
+        set(layer[get(hsLabel)].height,12)
+         );
+        ifnot(%3 == '',trace('has-title'); set(layer[get(hsLabel)].height,30);); -->
 
       if(get(hsp_type) == 3,
-        trace('edit3::',get(borderColor));
+  
         set(hotspot[get(hsp_name)].rotate,0);
-        set(layer[get(hsLabel)].rotate,0);
+        set(layer[get(hsLabel)].rotate,0)
         set(hotspot[get(hsp_name)].type,'text');
         set(hotspot[get(hsp_name)].width,1);
         set(hotspot[get(hsp_name)].height,80);
@@ -402,15 +421,14 @@
         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);
         set_label_dir(get(hsLabel),get(lineDirection),1);
         set_label_dir(get(hsDot),get(lineDirection),2);
 
        );
       if(get(hsp_type) LE 2,
-        trace('edit2');
+        trace('edit2::',get(hsp_name));
         txtadd(iconUrl,'',%4);
         txtreplace(iconUrl,'|',',');
         trace('iconUrl::',iconUrl);
@@ -425,10 +443,15 @@
         if(get(hsp_type) == 2, 
          indexoftxt(index, get(iconUrl), 'image_place_holder.png');
  
-         if(get(index) GT -1,set(hotspot[get(hsp_name)].animatiedOn,0); set(hotspot[get(hsp_name)].frames,-1););
+         if(get(index) GT -1,trace('place-holder');
+          set(hotspot[get(hsp_name)].animatiedOn,0);
+          set(hotspot[get(hsp_name)].crop,'');
+          crop_animation_r_stop(get(hsp_name));
+          );
+
          ifnot(get(index) GT -1, 
-        
           set(hotspot[get(hsp_name)].animatiedOn,0);
+          set(hotspot[get(hsp_name)].visible,true);
           set(hotspot[get(hsp_name)].frames,get(frameNumber));
           calc(frameRate, duration / frameNumber);
 
@@ -438,8 +461,9 @@
           trace('frameNumber::',get(frameNumber));
           trace('framewidth::',get(framewidth));
           trace('duration::',get(duration));
-        
-         crop_animation_reapply(get(hsp_name),get(frameRate),get(frameNumber));
+          set(hotspot[get(hsp_name)].xframes,1);
+          set(hotspot[get(hsp_name)].yframes,1,get(frameNumber));
+         crop_animation_reapply(get(hsp_name),get(frameRate),get(framewidth),get(frameNumber));
           <!-- do_crop_animation(get(hsp_name),get(frameRate),get(frameNumber)); -->
         <!-- do_crop_animation(get(framewidth),get(framewidth),get(frameNumber));"); -->
          );

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

@@ -83,13 +83,14 @@ const coverSystemIconPart = (origin) => {
 }
 
 const coverImageconPart = (origin) => {
+    const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
     const duplicate = structuredClone(initState)
     duplicate.id = origin.name;
     duplicate.title = origin.hotspotTitle;
     duplicate.ath = origin.ath;
     duplicate.atv = origin.atv;
     duplicate.type = 1;
-    duplicate.icon = origin.customIconInfo.img || origin.img || '';
+    duplicate.icon = origin.customIconInfo.img || defaultImage;
     duplicate.link = origin.link || '';
     duplicate.size = origin.size;
     convertBaseStyle(duplicate, origin)

+ 1 - 0
packages/qjkankan-editor/src/views/hotspot/EditPanel.vue

@@ -592,6 +592,7 @@ export default {
     cancel() {
       this.$store.commit("SetHotspot", this.backupHotSpot);
       console.log('cancel',this.backupHotSpot);
+      this.$getKrpano().call("cancelJQHotspot(" + this.backupHotSpot.name + ");");
       this.$emit("close", {
         type: this.editTitle == this.$i18n.t("hotspot.edit") ? "edit" : "add",
         data: this.backupHotSpot,