Quellcode durchsuchen

fix: 非导览中的漫游点发送currentItem为null

xzw vor 9 Monaten
Ursprung
Commit
18ff4de4cd
2 geänderte Dateien mit 29 neuen und 10 gelöschten Zeilen
  1. 27 7
      scene/public/static/js/main_2020_show.js
  2. 2 3
      scene/public/static/js/manage.js

+ 27 - 7
scene/public/static/js/main_2020_show.js

@@ -59569,6 +59569,7 @@ window.tourPlayCtl = {
 class UserGuide{
 class UserGuide{
     constructor(player){
     constructor(player){
         let lastCurItem
         let lastCurItem
+        this.currentItem = [0,0]
         this.player = player
         this.player = player
         this.pausedByBtn = true
         this.pausedByBtn = true
         
         
@@ -59577,33 +59578,52 @@ class UserGuide{
         });
         });
         player.on("flying.ended",(a,b,pano,d)=>{  
         player.on("flying.ended",(a,b,pano,d)=>{  
             //更新导览进度条  导览片段的选中与当前点位所属片段对应。 
             //更新导览进度条  导览片段的选中与当前点位所属片段对应。 
-            player.director.setCurrentItem( player.director.findNearestItem(true,true) )
+            this.setCurrentItem( player.director.findNearestItem(true,true) )
              
              
         }) 
         }) 
         
         
-        player.director.on("update.controls", ()=>{  //更新了currentItem的话
+        /* player.director.on("update.controls", ()=>{  //更新了currentItem的话
             if(player.director.itemCompare(lastCurItem, player.director.currentItem,'equal' )) return 
             if(player.director.itemCompare(lastCurItem, player.director.currentItem,'equal' )) return 
             lastCurItem = player.director.currentItem?.slice()
             lastCurItem = player.director.currentItem?.slice()
             
             
             if(!player.director.tourIsPlaying){
             if(!player.director.tourIsPlaying){
                 if(this.pausedByBtn) return 
                 if(this.pausedByBtn) return 
                 else this.play()
                 else this.play()
-            }
-            /* let folder = player.model.heroLocations[player.director.currentItem[0]]
-            let items = folder.heroLocations ? folder.heroLocations : [folder] 
-            if(items.some(e=>e.panoId == player.currentPano.id)){ */
+            } 
             let curItem = player.model.getHeroDescriptorByIndex(player.director.currentItem)
             let curItem = player.model.getHeroDescriptorByIndex(player.director.currentItem)
             if(player.currentPano.id == curItem.panoId){ 
             if(player.currentPano.id == curItem.panoId){ 
                 this.setMusic()
                 this.setMusic()
             }else{//走到了导览以外的区域
             }else{//走到了导览以外的区域
                 this.pause(false)//SoundManager.pause('tour') 
                 this.pause(false)//SoundManager.pause('tour') 
             }
             }
-        })
+        }) */
                 
                 
         player.director.playTourNearBy = this.play.bind(this)
         player.director.playTourNearBy = this.play.bind(this)
         player.director.stopTour = this.pause.bind(this)
         player.director.stopTour = this.pause.bind(this)
     }
     }
     
     
+    setCurrentItem(item){
+        if(player.director.itemCompare(item, this.currentItem,'equal' )) return 
+        //lastCurItem = player.director.currentItem?.slice()
+        
+        
+        let curItem = player.model.getHeroDescriptorByIndex(item)
+        if(player.currentPano.id == curItem.panoId){ 
+            player.director.setCurrentItem(item)
+          
+            //if(!player.director.tourIsPlaying){
+                if(this.pausedByBtn) return 
+                else this.play()
+            //}
+            //this.setMusic() 
+        }else{//走到了导览以外的区域
+            player.director.setCurrentItem(null)
+            this.pause(false)//SoundManager.pause('tour') 
+        }
+        
+        this.currentItem = item
+    }
+    
     play(){
     play(){
         //从当前index开始播放,如果在导览区域,就在当前点播音乐,如果不是就跳到当前导览区域第一个点
         //从当前index开始播放,如果在导览区域,就在当前点播音乐,如果不是就跳到当前导览区域第一个点
         //假定导览都在漫游模式  //假设不同导览区域不存在相同漫游点
         //假定导览都在漫游模式  //假设不同导览区域不存在相同漫游点

+ 2 - 3
scene/public/static/js/manage.js

@@ -2577,9 +2577,8 @@ function initByTHREE(THREE){
                 
                 
                 player.on("view.changed",(e)=>{//位移和旋转时都要判断最近item
                 player.on("view.changed",(e)=>{//位移和旋转时都要判断最近item
                     if(!player.director.highlightItem && e.cameraWorldMatrixChanged && !player.flying && !player.isWarping()  ){
                     if(!player.director.highlightItem && e.cameraWorldMatrixChanged && !player.flying && !player.isWarping()  ){
-                        common.intervalTool.isWaiting('tourUpdateCurItem',()=>{
-                            console.log('setCurrentItem')
-                            player.director.setCurrentItem( player.director.findNearestItem(true,true) )
+                        common.intervalTool.isWaiting('tourUpdateCurItem',()=>{ 
+                            player.guider3.setCurrentItem( player.director.findNearestItem(true,true) )
                              
                              
                         }, 521)
                         }, 521)
                     }                        
                     }