fornatus
Messages postés28Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention29 mars 2009
-
22 déc. 2005 à 01:09
cha9chi
Messages postés13Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention20 février 2010
-
28 août 2008 à 15:57
Bonjour, je suis un pauvre petit graphiste qui c'est fait laché au dernier moment et j'ai cruellement besoin d 'aide pour réussir mon animation.
Il s'agit ici de déplacer sur un axe horizontale un clip grâce à la souris (la postion x de la souris étant aussi la position x du clip) là où ça se complique c'est quand il s'agit de faire coincider ce mouvement avec la lecture du clip.
Autrement dit lorsque je déplace ma souris de gauche à droite j'aimerais que l'animation se lise du début à la fin (si je vais jusqu'au bord droit de mon anim) et inversement ci je vais de droite à gauche. Si ma souris s'arrête au milieu de l'écran, le clip doit être positionnée au milieur ET montrer l'image situé en son milieu.
Pouvez vous m'aider ?
Pour toutes autres questions je reste à votre disposition.
Si vous pouviez travailler à partir du fichier situé à cette adresse je ne vous en serez que trop reconnaissant : http://ahura.free.fr/burn.zip. J'ai ajouté des explications dans le clip.
Commentaires:
1-arreter l'animation des son chargement pour éviter qu'elle ne défile seule
2-tester si la souris est a gauche du zéro é le cas échéant positionner le clip a 0
3-tester si le clip est a droite (largeur comprise) et le cas échéant le placer au maximum a droite
4-sinon le placer au niveau de la souris
5-enfin aller a la frame de son _x
j'espere etre assez clair.
ceci est pour le cas ou la souris agit sur le clip dans toute l'animation mais tu veux peut etre qu'elle agsisse simplement en survolant le clip?
Ensuite deux choses peuvent t'intéresser, avoir un mouvement plus "souple" et ce centrer autour de la souris. Je peux te les proposer a moins que tu ne veuilles les rechercher.
atchoumdu51
Messages postés194Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention16 juillet 20071 22 déc. 2005 à 21:20
Voila j'ai fait le code...je ne peut te l'expliquer que rapidement. Le principe est de mesurer la distance entre le clip et l'arrivée et de déplacer le clip de cette distance multipliée par un coefficient inférieur a 1 et supérieur a 0 (que tu peux modifier dans le code, cela modifira le temps de réponse). Sinon cela reste dans la continuité des codes précédents.
Je retire this._width/2 au début pour centrer le code.
cortoh
Messages postés1255Date d'inscriptiondimanche 18 décembre 2005StatutMembreDernière intervention 2 décembre 2008 22 déc. 2005 à 02:01
bon, je ne suis pas certain d'avoir bien
compris ton souci, car tu parles d'animation, mais dans ton flash, il
n'y pas d'animation....juste la bande noire et le rectangle rouge...
bon si je pars du principe qu'au final, ta bande noire sera cette dite
animation, tu veux deplacer un clip( ici ton rectanlge rouge suivant
les mouvements de la souris:
Rec._x = _xpos //Rec est le nom de ton l'instance de ton clip rectangle
ce qui obligera ton rectangle a suivre les mouvements de la souris suivant l'axe des X.
si tu veux eviter que ce rectangle ne se ballade verticalement, fixes la valeur de _y:
Rec._y = A ou A est un nombre que tu definiras toi meme
ensuite, est-ce que ton animation sur laquelle tu veux interagir sera dans le bandeau, avcec un deplacement suivant l'axe des X?
Par contre par rapport a ton projet il faudrais que le clip ne se déplace pas dans lui même mais qu'il reste toujours avec le coin supérieur gauche aux coordonnées (0,0)
Vooila le commentaire du code
1- on arrete le clip a son chargement avec OnclipEVent(load)
2-quand on clique sur le clip il commence a se déplacer avec onEnterFrame, attention au int pour avoir des valeurs entieres
3-on supprime avec delete quand l'utilisateur relache sur ou en dehors du clip
tu peux limiter les mouvements du clip avec des if(this._x > 550){this._x 550;} et if(this._x < 0){this._x 0;}dans le onEnterFrame apres le code deja mis
j'espere que c'étais ce que tu recherchais
Vous n’avez pas trouvé la réponse que vous recherchez ?
fornatus
Messages postés28Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention29 mars 2009 22 déc. 2005 à 02:44
merci pour ce début d'explication. En fait j'aimerais qu'il n'y ai pas besoin de cliquer sur le clip mais juste qu'on est besoin de survoler l'animation pour bouger le clip. Comment dois-je faire pour donner ce même effet de droite à gauche ? Ce code ne semble marcher que pour lire la scène du début à la fin.
Ou dois-je placer exactement placer if(this._x > 550){this._x 550;} et if(this._x < 0){this._x 0;} ?
Je m'excuse pour toutes ces questions et vous remercie déjà pour l'aide.
fornatus
Messages postés28Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention29 mars 2009 22 déc. 2005 à 02:49
Désolé atchoumdu51 c'est moi, ça marche du tonnerre! Il faudrait juste qu'on est besoin de ne pas appuyer sur le clip mais juste de passer la souris sur l'animation.
Si tu à le temps de m'expliquer ou comment marche la fonction if n'hésite pas. Merci beaucoup à vous deux !
cs_nikolu
Messages postés1Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention22 novembre 2007 22 nov. 2007 à 17:57
bonjour moi j'ai un petit souci
j'aimerai le meme principe mais sans le deplacement du clip
c 'est a dire lire un clip en deplacant la souris
si la souris va a droite le clip joue si je vais a gauche le clip revien au debut mais en loop sans s'arreter
alors si quelqu'una une soluce a mon pb merci
atchoumdu51
Messages postés194Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention16 juillet 20071 22 nov. 2007 à 18:13
Bonjour
Tu peux essayer de te servir de monclip.goToAndStop en fonction de ce que tu veux faire (je suis pas sur de la casse car j'utilise jamais), en faisant des tests pour que ca boucle. Tu notes la frame actuelle et le nombre de frames dans des variables, et si dans tes calculs tu dépasses la valeur max tu reviens a 0, de même dans l'autre sens.
cha9chi
Messages postés13Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention20 février 2010 28 août 2008 à 15:57
salut a tous a par se probleme la j'en ai un autre :'(!!je n'arriver pas a appliquer se scripte a un objet que j'ai crée sans script!!!est ils possible???
le script :
MovieClip.prototype.DrawCircle=function(x,y,r){
this.moveTo(x+r,y);
this.beginFill("0xFBFFA4",100);
for(var t=0;t<Math.PI*2;t+=.5){
this.lineTo(x+r*Math.cos(t),y+r*Math.sin(t));
}
this.endFill();
}
FindAngle = function (x1, x2, y1, y2) {
return Math.atan2(y2-y1, x2-x1);
};
Distance=function(x1,x2,y1,y2){
return Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));
}
Interpolate=function(x1,y1,x2,y2,n){
var dist= Distance(x1,x2,y1,y2);
var ang = FindAngle(x1,x2,y1,y2);
var points = [];
for(var l = 0;l<=dist;l+=dist/n){
var x =x1+l*Math.cos(ang);
var y = y1+l*Math.sin(ang);
points.push({x:x,y:y});
}
return points;
}
DrawNodes=function(array){
_root.createEmptyMovieClip("line",1).lineStyle(1,0xFFFFFF,40);
line.moveTo(array[0].x,array[0].y);
for(var i = 1; i<array.length-1;i++){
line.lineTo(array[i].x,array[i].y);
}
line.DrawCircle(array[array.length-2].x,array[array.length-2].y,5);
}
currentnodes=gotonodes=Interpolate(275,0,_xmouse,_ymouse,15);
onMouseMove=function(){
gotonodes=Interpolate(275,0,_xmouse,_ymouse,15);
}
onEnterFrame=function(){
for(var node in gotonodes){
currentnodes[node].x=currentnodes[node].x+(gotonodes[node].x-currentnodes[node].x)/(node*node/30+1);
currentnodes[node].y=currentnodes[node].y+(gotonodes[node].y-currentnodes[node].y)/(node*node/30+1);
}
DrawNodes(currentnodes);
}
tout simplement je veut changer la cercle par un objet!!merci:)