Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Wed 06 January 2016 12:26

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

[OpenLayers 2] Animation d'images

Bonjour

j'affiche sur une carte une succession d'images météo à intervalles réguliers pour produire une animation.
le problème que je rencontre (particulièrement sur Chrome et IE et beaucoup moins sur FireFox) est un effet de transition (ou flash)
lors du passage d'une image à la suivante :
l'image ancienne disparaît mais n'est pas tout de suite remplacée par la nouvelle

voir les 2 gifs animés ci-joint pour illustrer le problème :
le fichier animation_avec_transition_PB.gif ci-joint fait bien ressortir la transition
le résultat attendu est illustré par le  fichier animation_sans_transition.gif

j'utilise la méthode sertUrl sur un layer de type OpenLayers.Layer.Image (OL Release 2.14 dev)

ma question est comment faire disparaître cet effet de transition

merci d'avance

Jean-Marie

Dernière modification par Jean-Marie64 (Wed 06 January 2016 12:27)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Thu 14 January 2016 10:58

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [OpenLayers 2] Animation d'images

une méthode pour s'en sortir est d'utiliser le mécanisme de buffer d'image de la manière suivante

Code:

for (var i=0;i<numlayertodisplay0;i++) {
  urli=.....; // nouvelle url
  this.layer.url=urli;
  this.layer.tile.url=urli;
  this.layer.tile.events.register('loadend',layer.tile.tile,removePreviousImage);
  this.layer.tile.[b]createBackBuffer()[/b];
  this.layer.tile.draw();
...
}

// effacement de l'image précédente uniquement lorsque la nouvelle image a été récupérée ce qui évite cet effet de flash 
function removePreviousImage () {
  if (this.layer.div.children[1]!=undefined) {
    this.layer.div.children[1].style.visibility="inherit";
    this.layer.div.removeChild(this.layer.div.firstChild); 
  }    
}

JM

Hors ligne

 

Pied de page des forums

Powered by FluxBB