Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: stopper twImgDefil
Envoyé: 15 mars 2004, 13h27 par Oznog
Effectivement la suptilité est dûr à saisir. C'est tout simplement que la direction utilise AUSSI la position de la souris (this._xmouse) pour ajuster la VITESSE du défillement.
En opérent à l'inverse, tu dois aussi inverser l'ajustement. Pour rendre négatif un nombre il suffit d'ajouter un "moins" (-) devant :
(this.Contenu2._x+Math.floor(-this._xmouse/(this.vitesse)))+this.MaxBas;
Pour rendre positif un nombre négatif, utilise la méthode "abs".
this.Contenu2._x+Math.floor(Math.abs(this._xmouse)/(this.vitesse))-this.MaxBas;
Ce qui donne :
onClipEvent (enterFrame) {
if (this._xmouse>0) {
this.direction = -1;
} else {
this.direction = 1;
}
if (this.direction==1) {
if (this.Contenu1._x<=this.MaxBas) {
this.Contenu1._x += Math.floor(Math.abs(this._xmouse)/(this.vitesse));
} else {
this.Contenu1._x = this.Contenu2._x+Math.floor(Math.abs(this._xmouse)/(this.vitesse))-this.MaxBas;
}
if (this.Contenu2._x<=this.MaxBas) {
this.Contenu2._x += Math.floor(Math.abs(this._xmouse)/(this.vitesse));
} else {
this.Contenu2._x = this.Contenu1._x-this.MaxBas;
}
} else {
if (this.Contenu1._x>=(this.MaxHaut-this.MaxBas)) {
this.Contenu1._x += Math.floor(-this._xmouse/(this.vitesse));
} else {
this.Contenu1._x = (this.Contenu2._x+Math.floor(-this._xmouse/(this.vitesse)))+this.MaxBas;
}
if (this.Contenu2._x>=(this.MaxHaut-this.MaxBas)) {
this.Contenu2._x += Math.floor(-this._xmouse/(this.vitesse));
} else {
this.Contenu2._x = this.Contenu1._x+this.MaxBas;
}
}
}
Note que tu peux carrément oter les ajustements avec la position de la souris, et donc avoir une vitesse constante mais un script plus simple.
Quant au bouton stop, l'idéale est d'utiliser un "flag", pourquoi pas this.direction déjà utilisé pour la direction. Disont qu,à zéro rien ne se passe.
Alors dans un bouton (absolument dans le clip "Bande" :
on (release) {
if (this.direction==0) {
this.direction = 1;
} else {
this.direction = 0;
}
}
Et j'ajoute un test de condition (au lieu du else) :
une variable boléenne. En partant elle devrait être à "vrais" (true).
Mettre au début du "enterFrame" :
if (this.direction<>0) {
if (this._xmouse>0) {
this.direction = -1;
} else {
this.direction = 1;
}
}
Et au lieu du "sinon"
} else {
Mettre :
}
if (this.direction==1) {
Code Complet :
onClipEvent (enterFrame) {
if (this.direction<>0) {
if (this._xmouse>0) {
this.direction = -1;
} else {
this.direction = 1;
}
}
if (this.direction==1) {
if (this.Contenu1._x<=this.MaxBas) {
this.Contenu1._x += Math.floor(Math.abs(this._xmouse)/(this.vitesse));
} else {
this.Contenu1._x = this.Contenu2._x+Math.floor(Math.abs(this._xmouse)/(this.vitesse))-this.MaxBas;
}
if (this.Contenu2._x<=this.MaxBas) {
this.Contenu2._x += Math.floor(Math.abs(this._xmouse)/(this.vitesse));
} else {
this.Contenu2._x = this.Contenu1._x-this.MaxBas;
}
}
if (this.direction==-1) {
if (this.Contenu1._x>=(this.MaxHaut-this.MaxBas)) {
this.Contenu1._x += Math.floor(-this._xmouse/(this.vitesse));
} else {
this.Contenu1._x = (this.Contenu2._x+Math.floor(-this._xmouse/(this.vitesse)))+this.MaxBas;
}
if (this.Contenu2._x>=(this.MaxHaut-this.MaxBas)) {
this.Contenu2._x += Math.floor(-this._xmouse/(this.vitesse));
} else {
this.Contenu2._x = this.Contenu1._x+this.MaxBas;
}
}
}
Ciao
Oznog
Réponses
|