2010-12-02 29 views
0

Je fais un point de base n » click jeu et je suis tombé sur cette erreur:
TypeError: Erreur # 1034: Type Coercion a échoué: ne peut pas convertir 3 à cem.mouvement.Erreur # 1034, avec un MouseEvent

Voici mon script:

package cem { 
    import flash.events.Event; 
    import flash.display.MovieClip; 
    import cem.microjeux.events.InfoJeuEvent; 
    import cem.mouvement; 
    import flash.events.MouseEvent; 

    public class monterJeu extends MovieClip 
    { 
     private static var pType:String = "type"; 
     private static var pNom:String = "testNom"; 
     private static var pCourriel:String = "[email protected]"; 
     private static var pDifficulte:int = 0; 
     private static var pLangue:int = 0; 
     private static var pTitre:String = "Veuillez sortir"; 
     private static var pVersion:String = "1.5"; 
     private static var pCoordonnees:Number; 

     private var environnementJeu:environnement = new environnement(); 
     private var personnageJeu:personnage = new personnage(); 

     public function monterJeu():void 
     { 
      jouer(pNom,pDifficulte,pLangue); 
      dispatchEvent(new InfoJeuEvent(pType,pNom,pCourriel,pTitre,pVersion)); 
      stage.addEventListener(MouseEvent.CLICK, test); 
     } 

     public function jouer(PNom:String,PDifficulte:int,PLangue:int):void 
     { 
      addChild(environnementJeu); 
      addChild(personnageJeu); 
     } 
     function test(e:MouseEvent){ 
      pCoordonnees = stage.mouseX; 
      trace(pCoordonnees); 
      mouvement(3); 
     } 
    } 
} 

Et mouvement();

package cem 
{ 
    public class mouvement { 

     public function mouvement(blabla) { 
      trace(blabla); 
     } 
    } 
} 

J'ai cherché partout où je pouvais, et n'ai rien trouvé. Je n'ai aucun cas sur la scène. Tout est importé sur la première image. Je suis un débutant (disons que je ne suis pas doué pour la programmation), donc vous pouvez avertir en même temps si vous avez quelque chose à corriger. (BTW, les mots étranges sont en français; D) Merci!

+1

Si vous formatez correctement votre code, il sera plus facile de répondre à la question –

+0

ouais désolé, il ne veut pas mieux formater que ça ... – Elggetto

Répondre

1

L'erreur est due à votre tentative de lancer 3 à mouvement.

Je pense que ce que vous voulez est quelque chose comme

function test(e:MouseEvent){ 
    pCoordonnees = stage.mouseX; 
    trace(pCoordonnees); 
    var mouve:mouvement = new mouvement(3); 
} 

Notez que vous devez avoir nouvelle afin de créer une nouvelle instance d'une classe. Sur une autre note, vous devriez capitaliser les classes afin qu'elles se démarquent mieux. Donc je nommerais la classe Mouvement.

+0

wow ... thx! C'était très gentil de votre part! Erreur stupide ... – Elggetto

0

Vous essayez de jeter 3 à la classe mouvement dans la fonction test:

function test(e:MouseEvent){ 
     pCoordonnees = stage.mouseX; 
     trace(pCoordonnees); 
     new mouvement().mouvement(3); // <-- here your error 
    } 

Si vous avez seulement une fonction dans votre classe, vous ne pas besoin de créer une classe mais vous pouvez mettre sur la seule fonction:

package cem 
{ 
     public function mouvement(blabla):void { 
      trace(blabla); 
     } 
} 

et maintenant vous pouvez appeler la fonction mpuvement normalement en fonction de test vous:

function test(e:MouseEvent){ 
    pCoordonnees = stage.mouseX; 
    trace(pCoordonnees); 
    mouvement(3); 
} 
+0

Merci !! J'aimerais pouvoir mettre deux bonnes réponses ... Et merci de mettre en forme mon texte aussi! Je ne savais pas que tu pouvais seulement mettre une fonction et pas de classe. – Elggetto

+0

@Elggetto, pas de problème;) – Patrick