Bonjour à tous,

Après de longues année à utiliser l'AS2, j'ai décidé de passer à l'AS3 mais pas sans mal. Voilà mon problème:

J'ai deux clips:

base: occurrence de Base qui utilise la classe Base.as

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
 
package  {
 
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.events.Event;
 
 
	public class Base extends MovieClip {
 
		//*** Attributs ***
		private var _cursposx:Number; //mémorisation curseur x
		private var _cursposy:Number; //mémorisation curseur y
		private var _vitesse:Number; //vitesse globale
		private var _vitessex:Number; //vitesse à appliquer en x
		private var _vitessey:Number; //vitesse à appliquer en y
		private var _angleRadian:Number; // angle en radian
		private var _angleDegree:Number; // angle en degree
		private var _mouseisdown:Boolean; // si le clique est enfoncé
 
		//*** Constructeur ***
		public function Base() {
			_vitesse = 5;
			addEventListener(Event.ENTER_FRAME, enterFrame);
			addEventListener ( MouseEvent.MOUSE_DOWN, update );
			addEventListener ( MouseEvent.MOUSE_UP, update2 );
		}
 
		//*** Accesseurs/Mutateurs ***
 
 
		//*** Méthodes ***
 
		public function update(event:MouseEvent):void{
			_mouseisdown = true;
			_cursposx = stage.mouseX;
			_cursposy = stage.mouseY;
			_angleRadian = Math.atan2(_cursposy - 360,_cursposx - 600);
			_angleDegree = _angleRadian * 180 / Math.PI;
			_vitessex = Math.cos(_angleRadian) * _vitesse; 
			_vitessey = Math.sin(_angleRadian) * _vitesse;
 
                        root.carre_mc.protation(_angleDegree);						
		}
		public function update2(event:MouseEvent):void{
			_mouseisdown = false;						
		}
		public function update3():void{
			_mouseisdown = true;
			_cursposx = stage.mouseX;
			_cursposy = stage.mouseY;
			_angleRadian = Math.atan2(_cursposy - 360,_cursposx - 600);
			_angleDegree = _angleRadian * 180 / Math.PI;
			_vitessex = Math.cos(_angleRadian) * _vitesse; 
			_vitessey = Math.sin(_angleRadian) * _vitesse;
 
		}
 
		public function enterFrame(e:Event):void{
 
			if(_mouseisdown == true){update3()}
			if(_cursposx < 590){x -=_vitessex;_cursposx -=_vitessex;}
			if(_cursposx > 610){x -=_vitessex;_cursposx -=_vitessex;}
			if(_cursposy < 350){y -=_vitessey;_cursposy -=_vitessey;}
			if(_cursposy > 370){y -=_vitessey;_cursposy -=_vitessey;}
			trace(_mouseisdown);
 
		}
 
 
	}//fin classe
 
}//fin package
carre_mc: occurrence de Carre qui utilise la classe Carre.as

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
 
package  {
 
	import flash.display.MovieClip;
 
 
	public class Carre extends MovieClip {
 
		//*** Attributs ***
		private var _rotation:int;
 
		//*** Constructeur ***
		public function Carre() {
			_rotation = 90;
		}
 
		//*** Accesseurs/Mutateurs ***
 
		public function get protation():Number{
			return _rotation;
		}
 
		public function set protation(nombre:Number):void{
			_rotation = Math.floor(nombre);
			this.rotation = _rotation;
		}
 
 
	}//fin classe
 
}//fin package
les deux clips sont placés dynamiquement sur la scène principale dans l'image1 du calque1:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
var base:Base = new Base();
base.x = 600;
base.y = 360;
addChild(base);
 
var carre_mc:Carre = new Carre();
carre_mc.x = 600;
carre_mc.y = 360;
addChildAt(carre_mc,1);
Je voudrais que lorsque je clique sur base, carre_mc pivote suivant _angleDegree. J'ai donc créé le mutateur "set protation" dans la classe Carre.as.
Dans la classe Base.as sur l'événement CLICK je veux appeler ce mutateur mais je n'y parvient pas.

J'ai essayé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
carre_mc.protation(_angleDegree);
root.carre_mc.protation(_angleDegree);
stage.carre_mc.protation(_angleDegree);
MovieClip(carre_mc).protation(_angleDegree);
J'ai toujours l'erreur suivante:

1119: Accès à la propriété carre_mc peut-être non définie, via la référence de type static flash.displayisplayObject.

Je ne comprend pas car cette erreur car j'ai bien précisé "public" devant mon mutateur.