IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Centre de rotation avec rotationX ou rotationY


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 46
    Par défaut Centre de rotation avec rotationX ou rotationY
    Bonjour,

    j'aimerais faire tourner un objet en modifiant sa propriété "rotationY".

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    addEventListener(Event.ENTER_FRAME,tourner);
     
    function tourner(evt:Event)
    {
    monObjet.rotationY=monObjet.rotationY+5;
    }
    seulement l'objet ne tourne pas selon un axe de rotation vertical qui passe par son centre mais un axe de rotation vertical qui passe par sa coordonnée x.

    j'ai essayé de réajuster sa coordonnée x à chaque rotation mais un :
    dans ma fonction me retourne toujours la même valeur.

    Je ne vois vraiment pas comment faire pour que l'objet donne l'impression de tourner sur lui-même et pas selon un axe vertical situé à son extrémité.

    Par avance, merci.
    Nuclear.

  2. #2
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Il faut que tu définisses les dimensions de ton objet de manière symétrique par rapport à 0 :

    regarde myRect :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    package 
    {
    	import flash.display.MovieClip;
    	import flash.display.Sprite;
    	import flash.events.Event;
     
    	[SWF(frameRate='20',width='400',height='400',backgroundColor='0x869CA7')]
     
    	public class MyObject extends MovieClip
    	{
    		private var myRect: Sprite = new Sprite();
     
    		public function MyObject():void 
    		{
    		  with (myRect.graphics)
    		  {
    		    beginFill(0xff0000);
    		    drawRect( -100, -100, 200, 200);
    		  }
    		  myRect.x = 200;
    		  myRect.y = 200;
    		  addChild(myRect);
     
    		  addEventListener(Event.ENTER_FRAME, doRot);
    		}	
     
     
            private function doRot(pEvt:Event):void
            {
    	   with(myRect) {rotationY=rotationY+5;}	
     
    	}
        }
     
    }

  3. #3
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Si tu penses que je n'ai pas répondu à ta question, c'est pourtant la surface de dessin qui détermine la position de ton axe de rotation ( pour le déplacer...)
    Pour une image par exemple, tu peux t'en sortir avec beginBitmapFill...C'est peut-être ton problème...

    autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    package 
    {
    	import flash.display.MovieClip;
    	import flash.events.Event;
    	import flash.display.Bitmap;
    	import flash.geom.Matrix;
     
    	[SWF(frameRate='32',width='800',height='600',backgroundColor='0')]
     
     
    	public class Main extends MovieClip
    	{
     
    	  [Embed(source = "../lib/developpez.jpg")]
    	   private  var developpez:Class;
    	   private var Fond:Bitmap = new developpez();
    	   private var matrice:Matrix=new Matrix();
     
    	   public function Main():void 
    	   {
    		Fond.scaleX = 0.4;
    		Fond.scaleY = 0.4;
    		matrice.createBox(0.4, 0.4, 0, - Fond.width / 2, - Fond.height / 2);
    		with (graphics)
    		{
    		  beginBitmapFill(Fond.bitmapData, matrice); 
    		  drawRect( - Fond.width / 2, - Fond.height / 2, Fond.width, Fond.height);
    		}
    		  x = stage.stageWidth/2;
    		  y = stage.stageHeight / 2 ;
    		  Fond.addEventListener(Event.ENTER_FRAME, doMove);		
    	    }
     
    	     private function doMove(pEvent:Event):void
    	     {		
    		 rotationY+=3;
    	     }
    	}	   	
    }
    ci-joint :
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Java3D]Centre de rotation
    Par ancrou dans le forum 3D
    Réponses: 1
    Dernier message: 05/02/2008, 15h43
  2. Caméra orbitale et centre de rotation
    Par mannaz dans le forum Ogre
    Réponses: 0
    Dernier message: 24/09/2007, 20h51
  3. [FLASH 8] centre de rotation
    Par bibile dans le forum Flash
    Réponses: 1
    Dernier message: 17/05/2007, 10h55
  4. Réponses: 2
    Dernier message: 25/03/2007, 21h49
  5. Réponses: 11
    Dernier message: 08/01/2006, 22h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo