begin process at 2012 05 27 19:07:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Flash

 > 

Archives

 > 

ActionScript

 > 

question sur angle de sourie, rotation de clip....


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

question sur angle de sourie, rotation de clip....

mardi 11 janvier 2005 à 17:03:14 | question sur angle de sourie, rotation de clip....

flow38

Salut alors, voila pour un site j'ai fait une interface ou face a un coffre fort l'internaute devra faire tourner les bagues afin d'obtenir le bon code permettant le coffre en question. Pour l'instant j'en suis simplement à l'etape faire tourner les bague avec la sourie:

sur la premiere frame de mon animation:
//une fonction qui aligne l'angle de mon clip (nommé cible) sur celui de ma sourie

rotation = function (x,y) {
 x= _xmouse-cible._x;
 y= _ymouse-cible._y;
 D = Math.sqrt((x*x)+(y*y));
 AngleRad = Math.acos(x/D);
 _root.cible._rotation = 180 * AngleRad / Math.PI * y/Math.abs(y);
 }//pas de probleme ça marche

//et la je voulais faire en sorte que lorsqu'on clic sur le clip cible ça lance la fonction rotation en boucle, d'ou l'utilisation du _root.onEnterFrame sauf ça ne marche qu'une fois et puis plus rien

_root.cible.onPress = function () {
 _root.onEnterFrame = rotation(_root.cible._x,_root.cible._y)
 }

Donc voila je voudrais savoir comment faire pour que: on press,  la fonction rotation s'execute en boucle tant que le ne lache pas le bouton

voila d'autre probleme vont survenir mais deja ça , ça m'aiderai bien!
@++

mardi 11 janvier 2005 à 17:52:12 | Re : question sur angle de sourie, rotation de clip....

SuperDevy

Membre Club
Petite amélioration et optimisation de ta fonction rotation :
function rotation ()
{
    cible._rotation = Math.atan2(cible._ymouse,cible._xmouse)*180/Math.PI;
}

Pour faire débuter l'action en cas de clique sur le bouton :
cible.onMouseMove = undefined;
cible.onPress = function ()
{
    this.onMouseMove = rotation;
}



A toi de parfaire !
www.SuperDevy.c.la !
mercredi 12 janvier 2005 à 15:30:41 | Re : question sur angle de sourie, rotation de clip....

flow38

Salut SuperDevy, merci pour ton aide mais j'aurais encore 2 questions:
_ Dans le code suivant :
cible.onMouseMove = undefined;
cible.onPress = function ()
{
    this.onMouseMove = rotation}
A quoi sert la ligne cible.onMouseMove = undefined; ?


_ L'effet obtenu n'est pas en faite celui attendu, car la function "aligne" l'angle de cible sur celui  de la sourie. Or il faudrait en fait que la function modifie l'angle du clip mais en fonction des variation d'angle de la sourie....ce qui est donc plus complexe....cette nouvelle difficulté me ramènne à une question qui m'intrigue depuis longtemps :

comment fait on en action script pour comparer les valeurs d'une variable qui évolue dans le temps (dans mon cas de coffre fort, il faudrait recuperer l'angle de la sourie à l'instant t et a l'instant t+1 pour obtenir la variation d'angle et la reporter sur l'angle de cible....je ne dit pas trop de betise!? :) )
Enfin en faite j'ai conscience que ça doit etre assez compliqué a expliquer mais si tu pouvez simplement m'indiquer un tuto, un fla  ou un lien abordant ce genre de problématique ce serai deja trés cool...

voila ++
mercredi 12 janvier 2005 à 17:44:31 | Re : question sur angle de sourie, rotation de clip....

flow38

Re, oui j'ai eu l'idée de tester avec la fonction setInterval , mon code est bien crade mais ça commence a faire comme decris plus haut.....: oui j'ai pa   s encore integre ton optimisation de code et j'ai pas mal touche au mien j'ai un peu peur de tout faire foirée....

Angleinit = function (x,y) {
 
 x= _xmouse-cible._x;
 y= _ymouse-cible._y;
 D = Math.sqrt((x*x)+(y*y));
 AngleRad = Math.acos(x/D);
 _root.cible.Angle0 = 180 * AngleRad / Math.PI * y/Math.abs(y);
 }
 
ModifAngle = function () {
 
 x= _xmouse-cible._x;
 y= _ymouse-cible._y;
 D = Math.sqrt((x*x)+(y*y));
 AngleRad = Math.acos(x/D);
 _root.cible.Angle2 = 180 * AngleRad / Math.PI * y/Math.abs(y);
 _root.cible.modif = _root.cible.Angle0 -_root.cible.Angle2 ;
 _root.cible._rotation = Math.round(_root.cible._rotation + _root.cible.modif) ;
 }

cible.onMouseMove = undefined;
cible.onPress = function ()
{ setInterval(Angleinit,20);
 setInterval(ModifAngle,30);

   
}

suis je sur la bonne voie ou y'a t il plus simple?
Reste le ^probleme que quand je relache le bouton de la sourie, la bague continue a "suivre" ma sourie....

mercredi 12 janvier 2005 à 23:05:55 | Re : question sur angle de sourie, rotation de clip....

flow38

Bon alors j'ai potassé et j'ai decide dele faire plus dans les regles de l'art ...ça donne ça:
Dans la 1er image de mon anim(_root):
            --------------------
cible.onMouseMove = undefined;
cible.onPress = function ()
{
    this.cible.rotat() ;
}

cible.onRelease = function ()
{
this.onMouseMove = 0 ;
//oui alors la ç'est carrement au pif mais j'en suis pas encore a faire marcher cette etape!! mdr
}
 
stop();

Sur la 1er image de mon clip dont l'occurence est cible:(j'ai des doute sur les chemin pour el clip cible...? cible est sur la scene de l'anim)
           -----------------------------------------------------------------------------
//Angle initial de la sourie
Angleinit = function ()
{
 this.cible.Angle0 = Math.atan2(this.cible._ymouse,this.cible._xmouse)*180/Math.PI;

}

 

//Fonction calculant une variation d'angle de la sourie et modifiant en csq celle de cible
ModifAngle = function ()
{
 this.cible.Angle2 = Math.atan2(this.cible._ymouse,this.cible._xmouse)*180/Math.PI;
 this.cible.modif = -(this.cible.Angle0 -this.cible.Angle2)*1.5 ;
 this.cible._rotation =  Math.round(this.cible._rotation + this.cible.modif) ;
 updateAfterEvent();
}

MovieClip.prototype.rotat = function(){
 this.onEnterFrame = function(){
  setInterval(Angleinit,47);
  setInterval(ModifAngle,50);
 updateAfterEvent();
}
}

Bon alors c'est beaucoup plus structuré mais ça amrche pas ...ou est le probleme!?

mercredi 12 janvier 2005 à 23:35:24 | Re : question sur angle de sourie, rotation de clip....

flow38

Alors la ça marche mais pas moyen d'arreter le truc: le cible.onRelease ne marche pas et l'anim est un peu brusque...

//tout sur la premiere image de mon anim:


//Angle initial de la sourie
Angleinit = function ()
{
 _root.cible.Angle0 = Math.atan2(_root.cible._ymouse,_root.cible._xmouse)*180/Math.PI;

}

 

//Fonction calculant une variation d'angle de la sourie et modifiant en csq celle de cible
ModifAngle = function ()
{
 _root.cible.Angle2 = Math.atan2(_root.cible._ymouse,_root.cible._xmouse)*180/Math.PI;
 _root.cible.modif = -(_root.cible.Angle0 - _root.cible.Angle2)*1.5 ;
 _root.cible._rotation =  Math.round(_root.cible._rotation + _root.cible.modif) ;
 updateAfterEvent();
}

MovieClip.prototype.rotat = function(){
 this.onEnterFrame = function(){
  setInterval(Angleinit,47);
  setInterval(ModifAngle,50);
 updateAfterEvent();
}
}

cible.onMouseMove = undefined;
cible.onPress = function ()
{
    this.rotat() ;
}

cible.onRelease = function ()
{
this.onMouseMove = 0 ;
//oui alors la ç'est carrement au pif mais j'en suis pas encore a faire marcher cette etape!! mdr
}
 
stop();

 

jeudi 13 janvier 2005 à 15:35:33 | Re : question sur angle de sourie, rotation de clip....

flow38

Voici mon code retravaillé et commenté, l'effet obtenu est plutot bien mais comme avant l'effet ne s'arrete pas lorsqu'on relache le bouton de la sourie:

//Fonction de calcul de l'angle initial de la sourie
Angleinit = function (nomocc) 
{
 nomocc.Angle0 = Math.atan2(nomocc._ymouse,nomocc._xmouse)*180/Math.PI; 
}
 
 
 
//Fonction calculant la variation d'angle de la sourie et modifiant en csq celle de cible 
ModifAngle = function (nomocc) 
{
  nomocc.Angle2 = Math.atan2(nomocc._ymouse,nomocc._xmouse)*180/Math.PI;
  nomocc.modif = -(nomocc.Angle0 - nomocc.Angle2)*1.5 ;
 if(Math.abs(nomocc.modif)<1)_root.cible.modif=0;//permet d'eviter le "tremblement" de la cible
 nomocc._rotation =  Math.round(nomocc._rotation + nomocc.modif) ;
  updateAfterEvent();
}
 
//Fonction permettant de modifier rotation de la cible de façon reguliere
MovieClip.prototype.rotat = function()
{
 this.onEnterFrame = function()
  {
                  modif = setInterval(ModifAngle,20,this);
   updateAfterEvent();
  }
}
 
cible.onMouseMove = undefined;

//cible est le clip a faire tourner...

cible.onPress = function ()
{
 Angleinit(this);
 this.rotat();
}

cible.onRelease = function()
{
 delete this.onEnterFrame ; 
}//c'est donc cette commande qui ne marche pas...?
 


stop();

jeudi 13 janvier 2005 à 17:54:27 | Re : question sur angle de sourie, rotation de clip....

SuperDevy

Membre Club
cible.onRelease = cible.onReleaseOutside = function()
{
 this.onEnterFrame = undefined; 
}


A toi de parfaire !
www.SuperDevy.c.la !
jeudi 13 janvier 2005 à 19:34:21 | Re : question sur angle de sourie, rotation de clip....

flow38

Merci de l'aide, mais ça marche pas!! je vais peter un cable....sinon tu entend quoi par "parfaire" et a quoi sert la ligne:
cible.onMouseMove = undefined; 
++
vendredi 14 janvier 2005 à 12:49:09 | Re : question sur angle de sourie, rotation de clip....

flow38

ayez j'ai trouve, c'etait ma methode rotat qui bloqué, en la simplifiant tout marche nickel!!!!!!!!:

//Angle initial de la sourie
Angleinit = function (nomocc) 
{
 nomocc.Angle0 = Math.atan2(nomocc._ymouse,nomocc._xmouse)*180/Math.PI; 
}
 
 
 
//Fonction calculant une variation d'angle de la sourie et modifiant en csq celle de cible 
ModifAngle = function (nomocc) 
{
  nomocc.Angle2 = Math.atan2(nomocc._ymouse,nomocc._xmouse)*180/Math.PI;
  nomocc.modif = -(nomocc.Angle0 - nomocc.Angle2)*1.5 ;
 if(Math.abs(nomocc.modif)<1)_root.cible.modif=0;//permet d'eviter le tremblement de la bague
 nomocc._rotation =  Math.round(nomocc._rotation + nomocc.modif) ;
  updateAfterEvent();
}
 
MovieClip.prototype.rotat = function()
{
 this.onEnterFrame = function()
  { //simplifiaction avant :   modif = setInterval(ModifAngle,20,this)
   ModifAngle(this);
  }
}
 
cible.onMouseMove = undefined;

cible.onPress = function ()
{
 Angleinit(this);
 this.rotat();
}


 cible.onRelease = cible.onReleaseOutside = function()
{
this.onEnterFrame = undefined;

}
stop();



Cette discussion est classée dans : clip, math, root, cible, rotation


Répondre à ce message

Sujets en rapport avec ce message

problème de reaction des voitures lors d'une collision [ par pimfanfan ] j'ai un petit problème pour mon jeu de voiture pas comme les autres lol:lors des collisions entre les deux voitures ,je n'arrive a programmer leur rea hitTest et clip animé [ par claviskass ] Salut.Ici mon code, un « hitTest » tout simple, mais voilà dés que je touche "place" mon clip "cible" ne joue pas sa série de frames en utilisant le " problème this et root [ par mailys6 ] J'ai un petit souci dans la fonction suivante : this['Lb'+i].onRelease= function() {      this.stopDrag();     cible = this._dro Effacer un clip dans un preload... [ par Thatagata ] Bonjour, comme je suis débutant, j'ai récupéré un script pour faire un preload contenant une animation. Le clip a été crée avec createEmptyMovieClip e problème au survol d'un clip dans une zone cible [ par ouiart ] J’ai une bande composée de plusieurs images qui sont des clips, l’ensemble des images est un clip, et le tout fonctionne parfaitement “tel quel” mais Lire une animation a l'envers...pas un clip!!! [ par timore ] RZAREKBOnsoir, je voulais savoir si il existe le moyen de rembobiner une animation.J'ai trouver ceci:Rewind = function(cible) {    cible.prevFrame(); Comment changer les paramètres de ce menu [ par mysstick ] Alors, voici mon pb :http://www.flashkod.com/codes/MENU-CARROUSSEL-3D_46489.aspxC'est le fichier que j'utilise pour faire un menu, la source est terri Ouvrir une page lors d'un clic [ par giulyman ] Bonjour à tous, votre aide me pourra être précieuse j'espère que vous pourrait m'aider.Voila les faits.J'ai crée un menu tournant. Il y a 4 brèves qui Rotation d'un clip lors d'un on(mouseOut) [ par Papillonvole ] Je coince sur un truc qui doit être trop simple.Je veux créer un effet de rotation verticale sur un clip se déclenchant lorsque la souris quitte le cl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,125 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales