Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash
Flash Forum d'entraide sur la technologie Flash (Cours, FAQs, Sources)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/06/2007, 12h28   #1
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
Par défaut ActionScript : fonction et passages de paramètres

Bonjour,

Je souhaite réaliser une fonction ActionScript toute bête : la fonction dessine un rectangle, et on lui passe en paramètre la couleur.
Voici ma fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
		public var myProperty : String = new String("0xff0066");
 
		public function v_1(myProperty : String){
			//
			mc1.graphics.lineStyle(1);
			mc1.graphics.beginFill(myProperty);
			mc1.graphics.drawRect(200,200,10,600);
			mc1.addEventListener(MouseEvent.CLICK,mouseClick_handler);
			this.addChild(mc1);
			//
		}
Par défaut, la couleur est donc 0xff0066, et je l'appel avec : v_1("0x0066ff"); pour changer la couleur. J'ai une erreur :
Citation:
1067: Contrainte implicite d'une valeur du type String vers un type sans rapport uint.
Mais je ne sais vraiment pas ce que ça veut dire.

Pouvez-vous m'expliquer ?

Merci d'avance.
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 12h39   #2
Membre du Club
 
Inscription : mai 2007
Messages : 65
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 66
Points : 66
Bonjour,

Peut être cela vient il du beginFill qui prend un nombre comme argument et pas une chaîne. Normalement il y a conversion implicite, j'ai pas essayé.

Goofyt
goofyt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 12h52   #3
Nouveau Membre du Club
 
Avatar de Tigrounette
 
Inscription : décembre 2005
Messages : 132
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 132
Points : 39
Points : 39
Une solution c'est le passer en paramètre ta couleur sous forme de Number et donc de passer de "0xff0066" à 0xff0066, comme ceci :

Code php :
1
2
3
4
5
6
7
8
9
10
11
public var myProperty : Number = 0xff0066;
 
	public function v_1(myProperty : Number){
		//
		mc1.graphics.lineStyle(1);
		mc1.graphics.beginFill(myProperty);
		mc1.graphics.drawRect(200,200,10,600);
		mc1.addEventListener(MouseEvent.CLICK,mouseClick_handler);
		this.addChild(mc1);
		//
	}

Quand une valeur commence par 0x elle est automatiquement interpréter comme un nombre héxadécimal, donc pas besoin de passer par un String. Essaye de tester un trace(0xff0066) tu verras que flash te renvoie un entier.

Dans ton code, tu pourrais même remplacer 0xff0066 par 16711782
Tigrounette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 13h26   #4
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
Merci pour vos réponses, mais je n'ai pas réussi à faire fonctionner le flash. Voici le code, en Number :
Code :
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
package{
	import flash.display.*;	
	import flash.events.*;
 
	public class v_1 extends MovieClip{
 
		public var mc1:MovieClip = new MovieClip();
		public var mc2:MovieClip = new MovieClip();
		public var myProperty : Number = 16711782;
 
		public function v_1(myProperty : Number){
			//
			mc1.graphics.lineStyle(1);
			mc1.graphics.beginFill(myProperty);
			mc1.graphics.drawRect(200,200,10,600);
			mc1.addEventListener(MouseEvent.CLICK,mouseClick_handler);
			this.addChild(mc1);
			//
		}
		private function enterFrame_handler(e:Event):void{
 
		}
		private function mouseClick_handler(e:Event):void{
			v_1(16711782);
 
		}
		private function mouseClick_handler2(e:Event):void{
		}
	}
}
Et ça m'affiche une erreur :
Citation:
ArgumentError: Error #1063: Non-correspondance du nombre d'arguments sur v_1$iinit(). 1 prévu(s), 0 détecté(s).
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 13h43   #5
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
Résolu avec :
Code :
public function v_1(myProperty){
Donc en enlevant le ": Number"...
Je précise que je suis en ActionScript 3.0 sous Adobe Flash CS 3.
Merci pour l'aide !
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 13h49   #6
Membre du Club
 
Inscription : mai 2007
Messages : 65
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 66
Points : 66
Oui, mais pas de typage pas de controle, le compilateur est notre ami

Goofyt
goofyt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 13h52   #7
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
En fait, j'ai dis n'importe quoi...
Ca marche si je fais :
Code :
1
2
3
		public var myProperty : Number = 167115;
 
		public function v_1(){
mais dans ce cas là, je ne passe plus mon paramètre !
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h14.


 
 
 
 
Partenaires

Hébergement Web