#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 в ваших классах.@ Брэндон..