IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment accélérer le défilement continu ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut Comment accélérer le défilement continu ?
    Bonjour

    J'espère avoir posté au bon endroit.

    Je voudrais accélérer le défilement de mon diaporama. J'ai essayé de modifier le chiffre indiqué après "speed" dans le code. Les choses se sont un peu arrangées mais je voudrais que cela aille beaucoup plus vite (2 fois au moins). Pourriez-vous me dire ce que je dois corriger ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    <html>
     
    <head>
    <title>Scroller</title>
    <Script>
    var pic = new Array()
     
    function banner(name, width){
    	this.name = name
    	this.width = width
       }
     
    pic[0] = .......pic[38] = new banner(...)
     
     
    var speed = 4
     
    var kk = pic.length
    var ii
    var hhh
    var nnn
    var myInterval
    var myPause
    var mode = 0
     
     
    var imgArray = new Array(kk)
    var myLeft = new Array(kk)
     
    for (ii=0;ii<kk;ii++){
    imgArray[ii] = new Image()
    imgArray[ii].src = pic[ii].name
    imgArray[ii].width = pic[ii].width
     
    	hhh=0 
    	for (nnn=0;nnn<ii;nnn++){
    		hhh=hhh+pic[nnn].width
    	}
    	myLeft[ii] = hhh
    }
     
    function ready(){
    	for (ii=0;ii<kk;ii++){ 
    		if (document.images[ii].complete == false){
    			return false	
    			break
    		}
    	}
    return true
    }
     
     
    function startScrolling(){
    	if (ready() == true){		
    		window.clearInterval(myPause)
    		myInterval = setInterval("autoScroll()",speed)	
    	}
    }	
     
     
    function autoScroll(){
    	for (ii=0;ii<kk;ii++){
    		myLeft[ii] = myLeft[ii] - 1
     
    	if (myLeft[ii] == -(pic[ii].width)){
    		hhh = 0
    		for (nnn=0;nnn<kk;nnn++){
    			if (nnn!=ii){
    				hhh = hhh + pic[nnn].width
    			}			
    		}
    		myLeft[ii] =  hhh
    	}
     
     
    		document.images[ii].style.left = myLeft[ii]
    	}
    	mode = 1
    }
     
    function stop(){
    	if (mode == 1){
    		window.clearInterval(myInterval)
    	}
    	if (mode == 0){
    		window.clearInterval(myPause)
    	}	
    }
     
    function go(){
    	if (mode == 1){
    		myInterval = setInterval("autoScroll()",speed)
    	}
    	if (mode == 0){
    		myPause = setInterval("startScrolling()",4)
    	}	
    }
     
    myPause = setInterval("startScrolling()",4)
    </Script>
     
    <body bgcolor='#FFFFFF'>
    <Script>
    for (ii=0;ii<kk;ii++){
    document.write('<a href = ' + pic[ii].link + ' target="_blank" ><img space=0 hspace=0 vspace=0 border=0 height=55 style=position:absolute;top:0;left:' + myLeft[ii]  + '; src=' + pic[ii].name + ' onMouseOver=stop() onMouseOut=go()></a>')
    }
    </Script>
    </body>
     
    </html>

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par epona1 Voir le message
    J'ai essayé de modifier le chiffre indiqué après "speed" dans le code. Les choses se sont un peu arrangées mais je voudrais que cela aille beaucoup plus vite (2 fois au moins). Pourriez-vous me dire ce que je dois corriger ?
    La valeur initiale était de 8 et tu l'as passée à 4 ? Ou bien tu ne l'as pas encore modifiée dans l'extrait présent

    C'est une valeur en milli-secondes qui représente le "pas" de l'automatisation : plus elle sera faible, plus ça ira vite ^^

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut
    Au départ, elle était de 50. J'ai tâtonné et baissé jusquà 2, même. Mais à partir de 20 (à peu près), je n'ai plus contaté aucune accélération. Je me dis qu'il doit y avoir un autre truc à corriger quelque part, non ?

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Il y a aussi une variable mode : quelle est sa valeur à l'exécution ?

    (Faut avouer qu'avec un code un peu plus lisible... bref ^^)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Par défaut
    Variable "mode" ? Je ne vois pas ce que c'est. J'ai aussi regardé sur la page qui contient le scroller, rien vu.

    Code plus lisible ? Que veux-tu dire ? Je ne comprends pas comment améliorer.

  6. #6
    Invité
    Invité(e)
    Par défaut
    et en modifiant le chiffre 1 dans la fonction autoscroll en mettant un chiffre plus grand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myLeft[ii] = myLeft[ii] - 1

  7. #7
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par epona1 Voir le message
    Code plus lisible ? Que veux-tu dire ? Je ne comprends pas comment améliorer.
    Voir mes premières remarques lors de ce post. ^^ Et il restait pas mal à en dire mais c'est du boulot et j'espérais que d'autres se joignent au chantier (sans offense, hein, chantier façon de parler ^^')
    Citation Envoyé par epona1 Voir le message
    Variable "mode" ? Je ne vois pas ce que c'est. J'ai aussi regardé sur la page qui contient le scroller, rien vu.
    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function go(){
    	if (mode == 1){
    		myInterval = setInterval("autoScroll()",speed)
    	}
    	if (mode == 0){
    		myPause = setInterval("startScrolling()",4)
    	}	
    }
    Quand (mode == 1) ce n'est pas la valeur de la variable speed qui est utilisée mais le littéral 4.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par epona1 Voir le message
    Au départ, elle était de 50. J'ai tâtonné et baissé jusquà 2, même. Mais à partir de 20 (à peu près), je n'ai plus contaté aucune accélération. Je me dis qu'il doit y avoir un autre truc à corriger quelque part, non ?
    Il faut savoir qu'en dessous de 20ms (environ, c'est fonction des navigateurs), les timers ne peuvent pas être considérés comme fiables (ben oui, il faut aussi laisser le temps à JavaScript d'effectuer ses traitements...)
    D'autre part, l'oeil humain ne peut détecter que 24 ou 25 images par secondes, c'est-à-dire une image toutes les 40ms, donc mettre une valeur inférieure n'a pas beaucoup de sens
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/03/2007, 17h12
  2. Comment programmer un défilement fluide en mode graphique ?
    Par 'ti programmeur dans le forum Pascal
    Réponses: 10
    Dernier message: 14/01/2007, 17h54
  3. Pour une définition de 800x600 comment forcer barre défilement
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 17
    Dernier message: 18/12/2006, 14h40
  4. [C#] Comment accélérer le chargement d'un treeview
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/11/2006, 09h58
  5. [IB 6.0] Comment accélérer l'accès a la BD ?
    Par mafuku dans le forum InterBase
    Réponses: 2
    Dernier message: 20/12/2005, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo