2010-12-02 5 views
0

기본 클릭 앤 클릭 게임을 만들고 있는데이 오류가 발생했습니다.
TypeError : 오류 # 1034 : 형식 강제 변환 실패 : 3을 cem.mouvement로 변환 할 수 없습니다. 여기Error # 1034 (MouseEvent 포함)

내 스크립트입니다 :

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

그리고 mouvement에

();

package cem 
{ 
    public class mouvement { 

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

나는 어디에서나 수색하고 아무 것도 찾지 못했습니다. 나는 무대에 어떤 예도 없다. 모든 것이 첫 번째 프레임에 임포트됩니다. 나는 일종의 초보자입니다. (내가 프로그래밍에 능숙하지 않다고 가정 해 봅시다.) 따라서 수정해야 할 것이 있다면 동시에 알릴 수 있습니다. (BTW, 이상한 단어는 프랑스어로 D) 고마워!

+1

코드 형식을 올바르게 지정하면 질문에 쉽게 대답 할 수 있습니다. –

+0

죄송합니다. 형식이 더 좋지는 않습니다. – Elggetto

답변

1

오류는 3을 (를) mouvement (으)로 캐스팅하려고했기 때문입니다.

나는 당신이 원하는 것은 당신이 클래스의 새로운 인스턴스를 생성하기 위해 새로운이 있어야

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

공지 사항 같은 것입니다 생각합니다.

또 다른 주목할 점은 클래스가 더 잘 보이도록 클래스를 모욕해야한다는 것입니다. 그래서 저는 Mouvement 수업에 이름을지었습니다.

+0

와우 ... thx! 그것은 당신에게 아주 친절했습니다! 어리석은 실수 ... – Elggetto

0

당신은 test 함수에 클래스 mouvement3를 캐스팅하려고 : 당신이 당신의 클래스에 단지 기능이있는 경우

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

당신이 클래스를 만들 필요가 없습니다하지만 당신은에 넣을 수 있습니다 단독 기능 :

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

지금 당신은 당신이 테스트 기능으로 일반적으로 mpuvement 함수를 호출 할 수 있습니다 :

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

고마워! 두 가지 정답을 쓸 수 있기를 바랍니다 ... 그리고 내 텍스트 서식을 주셔서 감사합니다! 나는 당신이 단지 기능과 수업을 할 수 없다는 것을 몰랐다. – Elggetto

+0

@Elggetto, 문제 없음;) – Patrick