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