AS3, ошибка 1180 вызов, возможно, неопределенного метода Nivel1, Adobe animate

#actionscript-3 #flash #undefined

#actionscript-3 #flash #не определено

Вопрос:

спасибо tatactic за ответ, я уже исправил эту проблему, но у меня есть это, вот все классы для игры, которые я хотел бы создать, но игрок не двигается, вы можете помочь мне здесь, в этом проблема. спасибо

Класс 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 (монета):

 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. Попробуйте var nuevoNivel1 : Nivel1 = new Nivel1(); . В следующий раз публикуйте фактический текст кода , а не изображения кода. Объясните, что на самом деле говорит ваша ошибка.

2. Пожалуйста, используйте английские имена для ваших переменных и методов!

3. Имена пакетов должны начинаться со строчной буквы «codigos.niveles», имена переменных тоже. Классы всегда должны начинаться с верхнего регистра, как вы это делали: «Nivel1». Методы всегда должны начинаться со строчной буквы. Вам следует подумать об этом, прежде чем отправлять вопрос.

4. Кому-либо трудно ответить на ваш вопрос, если этот вопрос неясен или плохо сформулирован. @Brandon

Ответ №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 / или выдаст ошибку? Это верно?

потому что «main» не определен в классе «Nivel1″… Я ошибаюсь?

И, пожалуйста, не могли бы вы также опубликовать класс «Jugador».

Не изображение, а код!!!

Просто скопируйте и вставьте код, затем выберите добавленный код, затем нажмите «образец кода <предварительный> <код> Ctrl K», как на изображении ниже:

введите описание изображения здесь

Таким образом, пользователи могут редактировать / изменять ваш код в другом ответе, не тратя время на переписывание всего кода, предоставленного prinstscreen (это огромная трата времени для сообщества здесь, на stackoverflow)!

Комментарии:

1. Отзывы @Brandon?

2. извините, что не ответил, у меня возникли проблемы с моим компьютером. Я исправил эту проблему, но если вы можете помочь мне с чем-то еще. Я выполнил коды для отображения и перемещения игрока на уровне, но не перемещается.

3. извините, я новичок в этом, я редактирую и помещаю все классы, я не знаю, почему проигрыватель не движется. @tatactic

4. Вы пытались отследить «main»? : трассировка (main); Я не вижу никаких ссылок на main в ваших классах.@ Брэндон..