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 :

Contrôler une animation à la souris


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 1
    Par défaut Contrôler une animation à la souris
    Bonjour,

    Mon problème est d'arriver à faire une animation en flash qui ressemble à ceci :
    http://www.flashloaded.com/flashcomp.../example3.html
    Je souhaite uniquement garder l'animation où l'objet tourne.

    Jusqu'à maintenant je faisais ça sous flash professionnal mais ma version d'essaie est terminée et je préfère faire un programme car j'en ai plus de 60 à générer.

    Ce que j'ai pensé à faire :
    1) Utiliser un fichier XML où je mets les images à loader
    2) Créer un moovie clip contenant autant de frames que d'images
    3) Permettre le Control à la souris

    J'arrive à loader les images à base du fichier XML mais je ne sais pas comment créer un Movie clip avec autant de frame.

    Après j'ai un code permettant de gérer un moovie clip.

    Est ce que vous avez des idées pour m'aider à poursuivre ce code ?

    Merci d'avance,

    Victor



    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    package  
    {
    	import flash.net.URLRequest;
    	import flash.display.Loader;
    	import flash.events.Event;
    	import flash.events.ProgressEvent;
    	import flash.events.MouseEvent;
    	import flash.display.MovieClip;
    	import flash.display.Stage;
    	import flash.display.DisplayObject;
    	import flash.display.Sprite;
    	/**
    	 * ...
    	 * @author Victor Sabatier
    	 */
    	public class CreateAnim 
    	{
     
    		/* attributs de la classe */
    		private var frameTo:Number;           // numéro de la frame courante affichée
    		private var oldFrameNumber:Number;    //la position dans le clip au moment du premier click
    		private var oldMouseXDown:Number;     //la position de la souris quand elle clique
    		private var isMouseDown:Boolean;
    		private var clip360:MovieClip;        // movieClip principal
    		private var nameSWF:String;			  // nom du swf loadé
    		private var mLoader:Loader;
    		private var mRequest:URLRequest;
    		private var monTableau:Array = ["file:///C:/Users/kujjuk/Desktop/pack-ouvert-320x320.jpg","file:///C:/Users/kujjuk/Desktop/imgres.jpg"];
     
    		/* constructeur de la classe */
    		public function CreateAnim(stage:Object,_frameTo:Number,_oldFrameNumber:Number,
    				_oldMouseXDown:Number,_isMouseDown:Boolean)
    		{
    			frameTo=_frameTo;
    			oldFrameNumber=_oldFrameNumber;
    			oldMouseXDown=_oldMouseXDown;
    			isMouseDown=_isMouseDown;
    			clip360 = new MovieClip();
    			stage.addChild(clip360);
    		}
     
    		public function startLoad(i:Number):void
    		{
    			mLoader = new Loader();
    			clip360.addChild(mLoader);
    			mRequest = new URLRequest(monTableau[i]);
    			mLoader.load(mRequest);
    			mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, controlCLip);
    		}
     
     
    		public function controlCLip(event:Event):void
    		{
    			//trace("test")
    			clip360.addFrameScript(clip360.totalFrames - 1, stopFunc);
    			clip360.buttonMode = true;
    			trace(clip360.totalFrames);
    			clip360.useHandCursor = true;
    			clip360.addEventListener(Event.ENTER_FRAME, goTo);
    			clip360.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDOWN);
    			clip360.addEventListener(MouseEvent.MOUSE_UP, onMouseUP);
    		}
     
    		//methode appelée dès que la souris est sur la fenêtre
    		private function goTo(e:Event):void
    		{
    			//check if the mouse is still inside the frame
    			if(!(clip360.mouseX < clip360.stage.stageWidth && clip360.mouseX > 0 && clip360.mouseY < clip360.stage.stageHeight && clip360.mouseY > 0)){
    				isMouseDown = false;
    			}
     
    			if(isMouseDown){
    				var percentageMoved:Number = (clip360.mouseX-oldMouseXDown)/clip360.stage.stageWidth;
    				frameTo = oldFrameNumber + (int)( -3 * percentageMoved * clip360.totalFrames);
    				trace(frameTo)
     
    				//check if frameTo is still in the bounds. Otherwise, start over to have a continous rolling effect :)
    				while(frameTo < 1){
    					frameTo = clip360.totalFrames + frameTo;
    				}
    				while(frameTo > clip360.totalFrames){
    					frameTo = frameTo - clip360.totalFrames;
    				}
     
    				clip360.gotoAndStop(frameTo);
    			}
    		}
     
    		private function onMouseDOWN(e:Event):void
    		{
    			trace("mouseDOWN");
    			oldMouseXDown = clip360.mouseX; //on la sauvegarde pour savoir de combien elle a bougé, ainsi calculer la nouvelle frame affichée
    			oldFrameNumber = clip360.currentFrame;
    			clip360.stop(); //when window appears, we do a first loop. If the user clicks before the end of the loop, we stop the loop
    			isMouseDown=true;
    		}
     
    		private function onMouseUP(e:Event):void
    		{
    			trace("mouseUP");
    			isMouseDown=false;
    		}
     
    		private function stopFunc():void{
    			clip360.gotoAndStop(1);
    		}
     
    	}
     
    }

  2. #2
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2011
    Messages : 26
    Par défaut
    Je n'ai pas vraiment le temps de me pencher sur ton code mais pour la rotation d'objets 3D en as3, je te conseil de regarder du côté de la biblihotèque Away 3D, tu trouveras pas mal d'exemples et le code sera très simple. Deplus, tu n'aura pas besoin d'exporter le modèle 3D en séquence bitmap et de tout mettre dans un xml.

    Bon courage,

    Deimz

Discussions similaires

  1. WebGL : Générer les coordonnées d'une sphère et contrôler la avec la souris
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 17/07/2013, 22h59
  2. Réponses: 1
    Dernier message: 10/02/2006, 16h59
  3. comment integer une animation swf dans une page
    Par naili dans le forum Intégration
    Réponses: 7
    Dernier message: 18/09/2002, 18h54
  4. Comment ne pas rejouer une animation après un clic ?
    Par mmmmhhh dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/09/2002, 16h11
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 17h59

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