2016-10-01 45 views
-4

謝謝tatactic回答,我已經解決了這個問題,但我有這個,這裏是我喜歡做的遊戲的所有類,但玩家是移動,你可以幫助我,這就是問題所在。 thnksAS3,錯誤1180調用可能未定義的方法Nivel1,Adobe動畫

Nivel1類別:

package Codigos.Niveles { 
    import flash.display.MovieClip; 
    import Codigos.Jugador; 
    import flash.events.Event; 
    import Codigos.CamaraVirtual; 

    public class Nivel1 extends MovieClip { 

     public function Nivel1() { 
      main.nuevoJugador = new Jugador(); 
      addChild(main.nuevoJugador); 
      main.nuevoJugador.x = 34; 
      main.nuevoJugador.y = 334; 
      main.nuevaCamara = new CamaraVirtual(); 
      addChild(main.nuevaCamara); 
      main.nuevaCamara.x = 400; 
      main.nuevaCamara.y = 240; 
      addEventListener("EnterFrame",nivel1Eventos); 
     } 
     private function nivel1Eventos(e:Event){ 
      if(main.nuevoJugador.x<=150){ 
       MovieClip(root).Nivel.x+=5; 
       MovieClip(root).escenario.x+=5; 
       main.nuevoJugador.x+=5; 
      } 
      else if(main.nuevoJugador.x>=650){ 
       MovieClip(root).Nivel.x-=5; 
       MovieClip(root).escenario.x-=5; 
       main.nuevoJugador.x-=5; 
      } 
     } 

    } 

} 

主類:

package { 

    import flash.display.MovieClip; 
    import Codigos.Jugador; 
    import flash.display.StageScaleMode; 
    import Codigos.CamaraVirtual; 

    public class main extends MovieClip { 

     public static var nuevoJugador:Jugador; 
     public static var nuevaCamara:CamaraVirtual; 
     public static var TemporalPuntos:int = 0; 
     public static var DerechaVar:Boolean = false; 
     public static var IzquierdaVar:Boolean = false; 
     public static var SaltoVar:Boolean = false; 

     public function main() { 
      stage.scaleMode = StageScaleMode.EXACT_FIT; 
     } 
    } 

} 

Jugador類(播放器):

package Codigos { 

    import flash.display.MovieClip; 
    import flash.events.Event; 


    public class Jugador extends MovieClip { 

     public var VelocidadX:int = 5; 
     public var VelocidadY:int = 1; 
     public var Limite:int = 10; 
     public var Salto:int = -12; 
     public function Jugador() { 
      addEventListener("EnterFrame",Moverme); 
     } 
     private function Moverme(e:Event){ 
      var NivelaTocar = MovieClip(root).Nivel; 
      if(NivelaTocar.hitTestPoint(x,y + height/2,true)){ 
       while(NivelaTocar.hitTestPoint(x,-1 + y +height/2,true)){ 
        y--; 
       } 
       VelocidadY=0; 
       if(main.SaltoVar){ 
        VelocidadY=Salto; 
        y+=VelocidadY; 
       } 
      } 
      else if(NivelaTocar.hitTestPoint(x,y-height/2,true)){ 
       VelocidadY = VelocidadY * -0.5; 
       y += VelocidadY; 
       while(NivelaTocar.hitTestPoint(x, y - height/2,true)){ 
        y++; 
        main.SaltoVar = false; 
       } 
      } 

      else { 
       y+=VelocidadY * 1.5; 
       main.SaltoVar = false; 
       if(VelocidadY <= Limite){ 
        VelocidadY++; 
       } 
      } 

      while(NivelaTocar.hitTestPoint(x + width/2, y , true)){ 
       x--; 
      } 
      while(NivelaTocar.hitTestPoint(x - width/2, y , true)){ 
       x++; 
      } 
      movimientosReales(); 
     } 
     private function movimientosReales(){ 
      if(main.DerechaVar){ 
       x+=VelocidadX; 
       scaleX = 1; 
      } 
      else if(main.IzquierdaVar){ 
       x-=VelocidadX; 
       scaleX = -1; 
      } 
     } 
    } 

} 

CamaraVirtual類(虛擬相機):

package Codigos { 

import flash.display.MovieClip; 
    import flash.events.MouseEvent; 
    import flash.events.Event; 


    public class CamaraVirtual extends MovieClip { 


     public function CamaraVirtual() { 
      addEventListener(MouseEvent.MOUSE_DOWN, Botones); 
      addEventListener(MouseEvent.MOUSE_UP, Soltar); 
      addEventListener(Event.ENTER_FRAME, TodaCam); 
      Puntos.text = String(int(0)); 
     } 
     private function Botones(e:MouseEvent){ 
      if(e.target == Derecha){ 
       main.DerechaVar = true; 
      } 
      else if(e.target == Izquierda){ 
       main.IzquierdaVar = true; 
      } 
      else if(e.target == Salto){ 
       main.SaltoVar = true; 
      } 
     } 
     private function Soltar(e:MouseEvent){ 
      main.DerechaVar = false; 
      main.IzquierdaVar = false; 
      main.SaltoVar = false; 
     } 
     private function TodaCam(e:Event){ 
      Puntos.text = String(int(main.TemporalPuntos)); 
     } 
    } 

} 

莫內達類(硬幣):

package Codigos { 

    import flash.display.MovieClip; 
    import flash.events.Event; 


    public class Moneda extends MovieClip { 


     public function Moneda() { 
      addEventListener(Event.ENTER_FRAME, tocar); 
     } 
     private function tocar(e:Event){ 
      if(hitTestObject(main.nuevoJugador)){ 
       removeEventListener(Event.ENTER_FRAME, tocar); 
       main.TemporalPuntos++; 
       parent.removeChild(this); 
      } 
     } 
    } 

} 
+0

嘗試'var nuevoNivel1:Nivel1 = new Nivel1();'。下次發佈**實際代碼**文本,而不是代碼圖片。解釋你的錯誤**實際上是**。 –

+0

請爲您的變量和方法使用英文名稱! – tatactic

+0

軟件包名稱應以小寫字母「codigos.niveles」開頭,變量名稱也應該如此。 類應始終以大寫字母開頭,如「Nivel1」。方法應始終以小寫開頭。 你應該考慮之前發佈一個問題。 – tatactic

回答

1

在你的構造方法Nivel1()評論的所有代碼,只是試試這個

public function Nivel1(){ 
     trace(main.nuevoJugador); 
     /* 
     main.nuevoJugador = new Jugador(); 
     addChild(main.nuevoJugador); 
     main.nuevoJugador.x = 25; 
     main.nuevoJugador.y = 344; 
     */ 
} 

的輸出是什麼? 我想,

trace(main.nuevoJugador); 

或者只是:

trace(main); 

將輸出未定義/空/或將拋出一個錯誤?是對的嗎?

因爲「主」沒有在「Nivel1」類中定義... 我錯了嗎?

請問,您可以發佈「Jugador」類

不是圖像,而是代碼!!!

只需複製和粘貼代碼,然後選擇您添加的代碼,然後點擊「的代碼示例<預> <代碼>按Ctrl + K」像下面的圖片中:

enter image description here

因此,用戶可以在另一個答案中編輯/更改您的代碼,而無需花時間重寫printerscreen提供的所有代碼(這對於此處的計算器而言是一個巨大的浪費時間)!

+0

@Brandon反饋? – tatactic

+0

對不起,我的電腦有問題。我已經解決了這個問題,但是如果你能用其他方法幫助我。 我已經完成了代碼出現並移動了關卡中的玩家,但是並沒有移動。 – Brandon

+0

對不起,在這個新的,我編輯和把所有的類,我不知道爲什麼玩家沒有移動。 @ tatactic – Brandon

相關問題