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

Flash Discussion :

ActionScript : fonction et passages de paramètres


Sujet :

Flash

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 50
    Points
    50
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    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.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    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

  3. #3
    Membre du Club Avatar de Tigrounette
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 69
    Points
    69
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    Merci pour vos réponses, mais je n'ai pas réussi à faire fonctionner le flash. Voici le code, en Number :
    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
    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 :
    ArgumentError: Error #1063: Non-correspondance du nombre d'arguments sur v_1$iinit(). 1 prévu(s), 0 détecté(s).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    Résolu avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    Oui, mais pas de typage pas de controle, le compilateur est notre ami

    Goofyt

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    En fait, j'ai dis n'importe quoi...
    Ca marche si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		public var myProperty : Number = 167115;
     
    		public function v_1(){
    mais dans ce cas là, je ne passe plus mon paramètre !

Discussions similaires

  1. Appel d'une fonction et passage de paramètres
    Par rolandl dans le forum jQuery
    Réponses: 2
    Dernier message: 30/09/2012, 17h44
  2. Réponses: 0
    Dernier message: 04/07/2010, 00h52
  3. probleme fonctions c++ -- passage de paramètres
    Par anissben dans le forum C++
    Réponses: 18
    Dernier message: 03/05/2010, 15h10
  4. Fonction et passage de paramètres
    Par methodman225 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/06/2009, 13h29
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

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