Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2011, 12h31   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 60
Points : 11
Points : 11
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 :
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>
epona1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 15h22   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
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 ^^
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 15h34   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 60
Points : 11
Points : 11
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 ?
epona1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 16h14   #4
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
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 ^^)
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 16h23   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 60
Points : 11
Points : 11
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.
epona1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 16h46   #6
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
et en modifiant le chiffre 1 dans la fonction autoscroll en mettant un chiffre plus grand
Code :
myLeft[ii] = myLeft[ii] - 1
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 16h49   #7
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
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 :
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.
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 16h54   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 60
Points : 11
Points : 11
Mekal a tout bon. J'ai passé le chiffre dans autoscroll de 1 à 5, pour voir. AY caramba, fouette cocher ! Ca pulse ! Merci +++

Merci Valeri, je vais regarder ça a tête reposée.
epona1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 20h55   #9
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par mekal Voir le message
et en modifiant le chiffre 1 dans la fonction autoscroll en mettant un chiffre plus grand
Code :
myLeft[ii] = myLeft[ii] - 1
Bien vu

Par contre, pour le nom de cette variable, puisqu'on en est là, à titre personnel, je suggère de la renommer de cette manière (--hommageAHenriMichauxCeGrandPoete;), ce qui ne sera ni plus ni moins clair que l'original, mais apportera une petite note de style tout-à-fait raffraichissante
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 21h12   #10
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 803
Points : 35 803
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h37.


 
 
 
 
Partenaires

Hébergement Web