Forums Développement Multimédia

Aller au contenu

une boule qui parcoure un chemin précis

CODE

15 réponses à ce sujet

#1 sara develop

    Ceinture Jaune

  • Members
  • PipPip
  • 20 messages

Posté 16 January 2015 - 22:07 PM

salut tout le monde !
j'ai écrit une petite fonction mathématique est j'ai dessiner sa courbe . maintenant je veux q'une boule parcoure cette courbe . voilà mon code :

var graphique :Shape  = new Shape();
var xmin : Number= new Number(-3 * Math.PI);
    var xmax : Number= new Number(3 * Math.PI);
       
    //valeur minimale et maximale sur l'axe des ordonnées
    var ymin : Number= new Number(-1* Math.PI);
    var ymax : Number = new Number(1* Math.PI);
       
    //largeur du graphique en pixels
          var largeur :Number= new Number(280);
       
    //hauteur du graphique en pixels
    var hauteur : Number= new Number(280);
       
    //valeur d'une unité en pixels sur l'axe des abscisses
    var ux : Number= largeur/(xmax - xmin)
       
    //valeur d'une unité en pixels sur l'axe des ordonnées
    var uy : Number= hauteur/(ymax - ymin);
       
    //nombre de points utilisés pour tracer la représentation de f
    var nbrPts : Number= new Number(500);
       
    //distance entre deux abscisses consécutives
    var pas:Number = (xmax - xmin) / (nbrPts - 1);
   
           //expression algébrique de la fonction tracée
    function f (t:Number) : Number {
         return Math.sin(t) ;
    //return (X0*Math.sin(valeurw* t - fi0)+ (X1*(Math.exp(-valeurksi*valeurwn*t))*Math.sin(Math.sqrt(1-Math.pow(valeurksi,2))*valeurwn*t+fi1)));
    }
    //instance dans laquelle nous allons tracer la fonction f
   //définition du style de trait
   graphique.graphics.lineStyle(0, 0x000000, 0.9);
   
   //tracé de l'axe des ordonnées
   graphique.graphics.moveTo(0, ymin*uy);
   graphique.graphics.lineTo(0, ymax*uy);
   
   //tracé de l'axe des abscisses
   graphique.graphics.moveTo(xmin*ux, 0);
   graphique.graphics.lineTo(xmax*ux, 0);
   
   //calcul du nombre de pixels entre le bord gauche et le repère
   var margeGauche:Number = (stage.stageWidth - largeur)/2;
   
   //calcul du nombre de pixels entre le bord haut et le repère
   var margeHaut :Number = new Number();
   margeHaut = (stage.stageHeight - hauteur)/2;
   
   //on translate le graphique vers le centre de l'animation
   graphique.x = margeGauche - xmin*ux;
   graphique.y = margeHaut + ymax*uy;
   
   /*on place l'ensemble des points de coordonnées (x;f(x)) avec
   x = xmin + pas*i et i prenant les valeurs 0, 1, 2, ..., nbrPts - 1*/

   
   var abscisse : Number = new Number(xmin);
   var ordonnee : Number = new Number(f(xmin));
   
   //style du trait employé pour tracer la représentation de f
   graphique.graphics.lineStyle(1, 0x10879D, 1);
   graphique.graphics.moveTo(abscisse*ux, - ordonnee*uy);
   
   //on relie les points successifs de coordonnées (x, f(x))
 
   for( var i:int =1; i<nbrPts; i++) {
   abscisse = xmin + pas*i;
   ordonnee = f(abscisse);
   graphique.graphics.lineTo(abscisse*ux, - ordonnee*uy);
   }
graphique.x = 720 ;
   graphique.y = 180 ;
var j:Number = xmin;
   var pcercle:Shape = new Shape () ; // pcercle c'ast ma boule
   pcercle.graphics.lineStyle(2, 0x000000);
   pcercle.graphics.beginFill(0x10879D);
   pcercle.graphics.drawCircle(590, 180, 8);
   pcercle.graphics.endFill();
   //pcercle.y = graphique.y;
   addChild (pcercle ) ;
   pcercle.addEventListener(Event.ENTER_FRAME, mvt1);
   function mvt1(evt:Event) : void {
                 j += 2 ;
                 pcercle.x = (xmin + pas*j );
                 pcercle.y = Math.sin(pcercle.x)*60;
   }

 

la fonction mvt1 ne fonctionne pas comme je veux ! comment faire svp

#2 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 17 January 2015 - 11:14 AM

bonjour
tu créer ta courbe sinus avec des points donc mets ces point dans un tableau et dans la fonction enterFrame deplace ta boule selon les coordonnée des point dans le tableau.
comme il sont nombreux et très proches ça fait un déplacement correct.
@gustave02

#3 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 17 January 2015 - 11:19 AM

en code voila les modifs

   //on relie les points successifs de coordonnées (x, f(x))

var tab:Array = new Array();

   for( var i:int =1; i<nbrPts; i++) {
                          var tab2:Array = new Array();
                            abscisse = xmin + pas*i;
   
                            ordonnee = f(abscisse);
                            graphique.graphics.lineTo(abscisse*ux, - ordonnee*uy );
    tab2.push(int(abscisse*ux));
    tab2.push(- int( ordonnee*uy));
    tab.push(tab2);
   }
 

graphique.x = 720 ;
graphique.y = 180 ;
addChild(graphique);
 

et


   function mvt1(evt:Event) : void {
                                 j += 1 ;
                                 pcercle.x = tab[j][0];
                                 pcercle.y = tab[j][1];
   }
 


#4 sara develop

    Ceinture Jaune

  • Members
  • PipPip
  • 20 messages

Posté 17 January 2015 - 15:38 PM

salut gustave . mrc pour votre aide ( c génial comme tjr )
mais reste que le compilateur me signale la ligne :

pcercle.x = tab[j][0];
 
je voix pas le problème !

#5 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 17 January 2015 - 16:02 PM

re
j'ai pas mis toute les modifs donc peut être que
var j:Number = xmin; doit passer var j:Number = 1;
reste a ta dispo si ça va pas j'envois tout.
@+ gustave02

#6 sara develop

    Ceinture Jaune

  • Members
  • PipPip
  • 20 messages

Posté 17 January 2015 - 17:17 PM

salut gustave ! bn re
j'ai ajouter un test :

if (j <nbrPts-1 ) {
                 pcercle.x = 136 +tab[j][0];
         pcercle.y = tab[j][1]; }
 
et ça b1 marché . Merci :D

#7 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 17 January 2015 - 17:24 PM

Oui bien sur if (j <nbrPts-1 ) { si j dépasse le nombre de case du tableau ça beug
et pcercle.x = 136 +tab[j][0]; le 136 c'est parce que tu créer ta boule a 590 passe a 720 ;

il faut dire que je donne une idée mais faut affiner.
content que tu est ta solution.

@+ gustave02

#8 sara develop

    Ceinture Jaune

  • Members
  • PipPip
  • 20 messages

Posté 17 January 2015 - 18:32 PM

vous avez toujours les bonnes idées :roi:
si je peux poser une 2eme question donne le mm sujet :
pourquoi quand je réduis la fenetre "Flash player " l animation ne se réduise pas ? il me faut tjrs agrandir la fenetre pour voir l animation :?

#9 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 17 January 2015 - 21:46 PM

désolé je comprend pas la question quand j’exporte et que j'ouvre le swf si je change la taille de la fenêtre du playeur ça redimensionne l’anime.
@+ gustave02

#10 sara develop

    Ceinture Jaune

  • Members
  • PipPip
  • 20 messages

Posté 19 January 2015 - 20:32 PM

salut gustave !
voilà ce que je veux dire : quand j'ouvre mon swf l animation ne se redimensionne pas ! elle est tjr grande
Bureau\cap.PNG

#11 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 19 January 2015 - 21:06 PM

je cherche a comprendre ce que tu veux.
mais !!!!!!!!!!!!
gustave02

#12 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 19 January 2015 - 21:15 PM

est ce que tu veux dire
quand tu integre ton anime sur une page htm ou html ou php ????

#13 sara develop

    Ceinture Jaune

  • Members
  • PipPip
  • 20 messages

Posté 19 January 2015 - 21:51 PM

non !
je veux juste q quand je redimensionne la fenetre flash player , l animation se redimensionne . car dans mon cas pour voir l animation complet il me faut agrandir la fenêtre flash player .
espérant que vous allez me comprendre

#14 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 19 January 2015 - 22:09 PM

désolé je dois rater un truc.
si quelqu'un comprend ?
@+ gustave02.

#15 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6957 messages

Posté 19 January 2015 - 23:45 PM

Salut,

Tu prend le problème à l'envers.
Soit tu agrandit la taille de la scène dès le départ.
Soit tu réduit la taille du contenu (ton animation et ta courbe) pour que ça rentre dans la taille de la scène.
Si je comprend bien tu cherches à adapter la taille de la scène à la taille de ton anim une fois que tu as compilé l'animation.

#16 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 20 January 2015 - 08:26 AM

la nuit porte conseil et je viens de lire la réponse de Monsieur Spi.
si ton blême c'est que la taille de la scène j'étais passé a coté.
sinon je crois que tu bosses avec flash develop, moi aussi, envois ton projet.
@+ gustave02



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP