Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: controler le défilement d'un bandeau d'images
Envoyé: 29 mars 2004, 16h43 par toph
effectivement, c'est avec la vitesse qu'il faut jouer, mais je pense que ton problème est un problème de ciblage (Je parle comme Dada maintenant...) ...
Tu déclares des fonctions (crBandeau) en y envoyant la vitesse comme parametre, mais le problème c'est que cette vitesse, une fois envoyée à la fonction, ne peut plus être modifiée puisqu'inaccessible ... le mieux est d'utiliser des fonctions 'classiques' (je connais pas trop les globales moi) et d'inclure la vitesse comme étant un parametre du clip et non de la fonction, ainsi, tu peux très facilement la cibler plus tard avec ton bouton ...
Un autre conseil, évite de trop utiliser les _root, car un jour viendra, tu inclueras des animations dans d'autres animations et le _root de l'animation-fille deviendra le _root de l'animation-mère et ça faussera tous les ciblages : envoies plutôt la cible en parametre de fonction, ça te permet à la fois de pouvoir réutiliser ta fonction avec un autre clip sans avoir à tout recoder, mais également de pouvoir la transporter un peu où tu veux dans l'anim... de même évite le 'with' dont je me suis toujours méfié ... quasi pour les mêmes raisons...
Bon, je te donne un code qui marche, si tu as des question, n'hésites pas
A plus
TOph'
*************************************
Stage.scaleMode = "noScale";
Stage.align = "";
function crBandeau(cible, clip, pX, pY, largeur) {
cible.createEmptyMovieClip("bandeau", 1);
cible.bandeau._x = 2;
cible.bandeau._y = 2;
cible.bandeau.vitesse = 3;
cible.bandeau.attachMovie(clip, "image", 1);
defile(cible.bandeau, largeur);
}
function defile(cible, largeur) {
var initialPosX = cible._x;
var hauteur = cible._height;
cible.image.duplicateMovieClip("image2", 2);
cible.image2._x = cible.image._x+cible.image._width;
prop = initialPosX-(cible.image._width);
cible._parent.createEmptyMovieClip("mask", 9999);
cible._parent.mask.beginFill(0x000000, 100);
cible._parent.mask.moveTo(0, 0);
cible._parent.mask.lineTo(largeur, 0);
cible._parent.mask.lineTo(largeur, hauteur);
cible._parent.mask.lineTo(0, hauteur);
cible._parent.mask.lineTo(0, 0);
cible._parent.mask.endFill();
cible._parent.mask._y = this._y;
cible._parent.mask._x = initialPosX;
cible.setMask("mask");
cible.onEnterFrame = function() {
cible.posX = cible._x;
cible._x -= cible.vitesse;
if (cible.posX<=prop) {
cible._x = initialPosX;
}
};
}
crBandeau(this,"360", 50, 85, 50); //change ici le 50 en la largeur de ton anim
et sur le bouton ********************
on(release) {
bandeau.vitesse = 3-bandeau.vitesse;
}
ça fait basculer la valeur de vitesse de 0 à 3 (tu peux mettre autre chose). C'est-à-dire qu('un coup, elle avance, un coup elle avance pas...
Voilà,
a plus
Toph'
Réponses
|