AS3,错误1180调用可能未定义的方法Nivel1,Adobe动画

时间:2016-10-01 22:56:56

标签: actionscript-3 flash undefined

谢谢tatactic的回答,我已经解决了这个问题,但我有这个,这里是我想制作的游戏的所有类,但玩家没有动,你可以帮助我,这就是问题所在。 thnks

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

}

Moneda Class(硬币):

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

}

1 个答案:

答案 0 :(得分: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);
  

会输出undefined / null /或会抛出错误吗?是吗?

因为&#34;主要&#34;未在&#34; Nivel1&#34;中定义类... 我错了吗?

请你能发布&#34; Jugador&#34;等级

  

不是图片,而是代码!!!

只需复制并粘贴代码,然后选择您添加的代码,然后点击&#34;代码示例&lt; pre&gt;&lt; code&gt; Ctrl + K&#34; ,如下图所示:

enter image description here

因此,用户可以在另一个答案中编辑/更改您的代码,而无需花时间重写prinstscreen提供的所有代码(这对于stackoverflow上的社区来说是一个巨大的浪费时间)!