2017-07-23 3 views
0

J'ai une simple galerie d'images CSS et lorsque vous cliquez sur une image, le script ouvre une nouvelle fenêtre modale (pop-up) avec la scène THREE.JS, qui est essentiellement construit sur des données d'image. Le problème est que chaque fois que vous ouvrez l'image suivante, tout devient lent et lent - le script ne tue pas les scènes précédentes et ses données.Three.JS En cours d'exécution à la fenêtre modale (pop-up)

Par code ressemble à ceci (JQuery):

$(document).ready(function() { 

$("#modalClose").click(function(e) { $("#modalThree").css("display","none"); $("#group").show(); $("#container").empty(); while(scene.children.length > 0){ scene.remove(scene.children[0]); } }); 

     var gallerySize = 6; 

      for(var i = 1; i <= gallerySize; i++){ 

       $("#0" + i).click(function(e) { 

        $("#modalThree").css("display","block"); 

        $("#group").hide(); 

          loader.load(

          $(this).attr("src") , 

          function (texture) { init(texture); }, 
          function (xhr) { }, 
          function (xhr) { } 

         ); 

        });  

      } 

}); 

assez sûr que je dois « tuer » toutes les variables, les objets, les géométries, mais je ne sais pas comment et ce serait génial si quelqu'un ici pourrait m'aider. S'il vous plaît.

Répondre

0

Dans votre exemple, la scène est désactivée en mode dom, pas en cas de clic.

Essayez ce code:

$(document).ready(function() { 

    var gallerySize = 6; 

     for(var i = 1; i <= gallerySize; i++){    

      $("#0" + i).click(function(e) { 
       while(scene.children.length > 0){ scene.remove(scene.children[0]); } 
       $("#modalThree").css("display","block"); 

       $("#group").hide(); 

         loader.load(

         $(this).attr("src") , 

         function (texture) { init(texture); }, 
         function (xhr) { }, 
         function (xhr) { } 

        ); 

       });  

     } 

}); 
+0

Pas vraiment, il est à la pop-up « fermer " un événement. Publié légèrement fausse version. – VVK

+0

Essayez aussi 'scene = null' – stweb

0

En fait, le calorifugeage se produit en raison de la croissance des auditeurs #.

enter image description here

Et les statistiques de performance montrent qu'il ya 34, puis 43, 46, 53, 56, 61, 64 et ainsi de suite ...