pb script Expert: prototype setInterval

pb script Expert: prototype setInterval - Flash/ActionScript - Programmation

Marsh Posté le 12-01-2005 à 23:17:12    

Salut alors, voila pour un site j'ai fait une interface ou face a un coffre fort l'internaute devra faire tourner une bagues afin d'obtenir le bon code permettant d'ouvrir le coffre en question. Pour l'instant j'en suis simplement à l'etape faire tourner les bague avec la sourie:
je galere pas mal mais j'ai commence a me documenter serieusement sur l'actionscript et j'essaye de faire du code propre....
 
 
 
Dans la 1er image de mon anim(_root):
            --------------------
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();
 
 
Alors la ça marche mais pas moyen d'arreter le truc: le cible.onRelease ne marche pas et l'anim est un peu brusque...je sais pas trop comment gerer les setInterval au nivo cadence et difference de cadence surtout...


Message édité par flow38 le 13-01-2005 à 15:38:49
Reply

Marsh Posté le 12-01-2005 à 23:17:12   

Reply

Marsh Posté le 13-01-2005 à 10:02:16    

up up

Reply

Marsh Posté le 13-01-2005 à 15:36:43    

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();  
 

Reply

Marsh Posté le 13-01-2005 à 18:07:59    

flow38 a écrit :


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


 
Les puristes diront sûrement que ce n'est pas la bonne solution, que c'est 'mal' ... mais quand je veux 'annuler' l'action de l'évènement onEnterFrame , je fais simplement :

Code :
  1. this.onEnterFrame = function() {};


et là, c'est clair que ça ne fait plus rien du tout !
 [:airforceone]  

Reply

Marsh Posté le 13-01-2005 à 23:29:09    

merci de ta participation, mais j'ai essaye et ça ne change rien..je commence à me demander si c'est pas un bug...est ce possible?

Reply

Marsh Posté le 14-01-2005 à 00:11:12    

flow38 a écrit :

je commence à me demander si c'est pas un bug...est ce possible?


 
carrement que c'est possible.. c'est truffé de bugs de partout..
et avec un peu d'experience tu peux meme apprendre a les utiliser les bugs :D  
 
mais franchement le action script c'est le truc le + trash underground que j'ai jamais eu a toucher..  :sweat:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed