Con vínculos externos con calendario clase AS COMO
- ryrocks
- Newbie


- Registrado: Feb 13, 2009
- Mensajes: 6
- Status: Offline
¡Eh!,
Ive apenas comenzó a utilizar las clases, mientras que el desarrollo de mi juego de la plataforma básica en Flash AS3.
En el escenario tengo un personaje, el nombre de instancia "ball_mc". Tengo como en la línea de tiempo que controla el movimiento de los personajes.
Tengo un archivo llamado Externo Ground.as que básicamente es un HitTest enterFrame que detiene el carácter de movimiento cuando el carácter de "hits" el suelo.
He puesto un rectángulo de MC en el escenario para representar el terreno y lo vinculó a la Ground.as externa archivo AS
El Código de Ground.as es el siguiente:
Cuando pruebo la película que recibe una serie de errores, me dice que las variables y los objetos no están definidos. por ejemplo: "el acceso de ball_mc propiedad no definida".
Esto es porque todos los VARs y ball_mc se declara en la línea de tiempo.
Por lo tanto, de la tierra como archivo externo. como, ¿cómo se relacionan con los objetos en el escenario y la codificación en la línea de tiempo?
Heres mi código en la línea de tiempo:
Gracias de antemano,
Dave
Ive apenas comenzó a utilizar las clases, mientras que el desarrollo de mi juego de la plataforma básica en Flash AS3.
En el escenario tengo un personaje, el nombre de instancia "ball_mc". Tengo como en la línea de tiempo que controla el movimiento de los personajes.
Tengo un archivo llamado Externo Ground.as que básicamente es un HitTest enterFrame que detiene el carácter de movimiento cuando el carácter de "hits" el suelo.
He puesto un rectángulo de MC en el escenario para representar el terreno y lo vinculó a la Ground.as externa archivo AS
El Código de Ground.as es el siguiente:
Código: [ Select ]
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class Ground extends MovieClip Event
{
public function Ground()
{
stage.addEventListener(Event.ENTER_FRAME, hitCheck);
public function hitCheck(event:Event):void
{
if (ball_mc.hitTestObject(this))
{
ball_mc.y = this.y - (this.height*1.4);
jump = false;
falling = false;
velocity = 20;
}
else if (!ball_mc.hitTestObject(this) && !jump)
{
falling = true;
jump = false;
ball_mc.y += 16;
}
}
}
}
}
{
import flash.display.MovieClip;
import flash.events.Event;
public class Ground extends MovieClip Event
{
public function Ground()
{
stage.addEventListener(Event.ENTER_FRAME, hitCheck);
public function hitCheck(event:Event):void
{
if (ball_mc.hitTestObject(this))
{
ball_mc.y = this.y - (this.height*1.4);
jump = false;
falling = false;
velocity = 20;
}
else if (!ball_mc.hitTestObject(this) && !jump)
{
falling = true;
jump = false;
ball_mc.y += 16;
}
}
}
}
}
- package
- {
- import flash.display.MovieClip;
- import flash.events.Event;
- public class Ground extends MovieClip Event
- {
- public function Ground()
- {
- stage.addEventListener(Event.ENTER_FRAME, hitCheck);
- public function hitCheck(event:Event):void
- {
- if (ball_mc.hitTestObject(this))
- {
- ball_mc.y = this.y - (this.height*1.4);
- jump = false;
- falling = false;
- velocity = 20;
- }
- else if (!ball_mc.hitTestObject(this) && !jump)
- {
- falling = true;
- jump = false;
- ball_mc.y += 16;
- }
- }
- }
- }
- }
Cuando pruebo la película que recibe una serie de errores, me dice que las variables y los objetos no están definidos. por ejemplo: "el acceso de ball_mc propiedad no definida".
Esto es porque todos los VARs y ball_mc se declara en la línea de tiempo.
Por lo tanto, de la tierra como archivo externo. como, ¿cómo se relacionan con los objetos en el escenario y la codificación en la línea de tiempo?
Heres mi código en la línea de tiempo:
Código: [ Select ]
var leftDown:Boolean = false;
var rightDown:Boolean = false;
var jump:Boolean = false;
var velocity:Number = 20;
var falling:Boolean = true;
var speed:int = 5;
stage.addEventListener(KeyboardEvent.KEY_DOWN, downDetect);
function downDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = true;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = true;
}
if(event.keyCode == Keyboard.UP && !falling)
{
jump = true;
}
}
stage.addEventListener(KeyboardEvent.KEY_UP, upDetect);
function upDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = false;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = false;
}
}
stage.addEventListener(Event.ENTER_FRAME, moveChar);
function moveChar(event:Event):void
{
if (leftDown)
{
ball_mc.x -= speed;
}
if (rightDown)
{
ball_mc.x += speed;
}
if (jump)
{
ball_mc.y -= velocity;
velocity -= 1.5;
}
}
var rightDown:Boolean = false;
var jump:Boolean = false;
var velocity:Number = 20;
var falling:Boolean = true;
var speed:int = 5;
stage.addEventListener(KeyboardEvent.KEY_DOWN, downDetect);
function downDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = true;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = true;
}
if(event.keyCode == Keyboard.UP && !falling)
{
jump = true;
}
}
stage.addEventListener(KeyboardEvent.KEY_UP, upDetect);
function upDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = false;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = false;
}
}
stage.addEventListener(Event.ENTER_FRAME, moveChar);
function moveChar(event:Event):void
{
if (leftDown)
{
ball_mc.x -= speed;
}
if (rightDown)
{
ball_mc.x += speed;
}
if (jump)
{
ball_mc.y -= velocity;
velocity -= 1.5;
}
}
- var leftDown:Boolean = false;
- var rightDown:Boolean = false;
- var jump:Boolean = false;
- var velocity:Number = 20;
- var falling:Boolean = true;
- var speed:int = 5;
- stage.addEventListener(KeyboardEvent.KEY_DOWN, downDetect);
- function downDetect(event:KeyboardEvent):void
- {
- if(event.keyCode == Keyboard.LEFT)
- {
- leftDown = true;
- }
- if(event.keyCode == Keyboard.RIGHT)
- {
- rightDown = true;
- }
- if(event.keyCode == Keyboard.UP && !falling)
- {
- jump = true;
- }
- }
- stage.addEventListener(KeyboardEvent.KEY_UP, upDetect);
- function upDetect(event:KeyboardEvent):void
- {
- if(event.keyCode == Keyboard.LEFT)
- {
- leftDown = false;
- }
- if(event.keyCode == Keyboard.RIGHT)
- {
- rightDown = false;
- }
- }
- stage.addEventListener(Event.ENTER_FRAME, moveChar);
- function moveChar(event:Event):void
- {
- if (leftDown)
- {
- ball_mc.x -= speed;
- }
- if (rightDown)
- {
- ball_mc.x += speed;
- }
- if (jump)
- {
- ball_mc.y -= velocity;
- velocity -= 1.5;
- }
- }
Gracias de antemano,
Dave
- Anonymous
- Bot


- Registrado: 25 Feb 2008
- Mensajes: ?
- Loc: Ozzuland
- Status: Online
Febrero 13th, 2009, 7:09 pm
- ryrocks
- Newbie


- Registrado: Feb 13, 2009
- Mensajes: 6
- Status: Offline
De la falta de respuestas Im que sintiendo que Im que va de esta manera completamente equivocada?
Sólo quiero varias instancias de la tierra rectángulo, cada uno con el mismo éxito la prueba para que el personaje deja de moverse cuando llega cualquier sección de la tierra.
No quiero repetir el mismo código hittest una y otra vez para cada rectángulo, ¿cómo iba a ir sobre esto?
Sólo quiero varias instancias de la tierra rectángulo, cada uno con el mismo éxito la prueba para que el personaje deja de moverse cuando llega cualquier sección de la tierra.
No quiero repetir el mismo código hittest una y otra vez para cada rectángulo, ¿cómo iba a ir sobre esto?
- ryrocks
- Newbie


- Registrado: Feb 13, 2009
- Mensajes: 6
- Status: Offline
Mis disculpas si no he explicado muy bien. Permítanme empezar de nuevo (mi enfoque ha cambiado mucho desde mi puesto inicial).
Im que hace un juego de plataformas de base
Tengo 3 clips de película en el escenario:
-Un círculo que representa el carácter que los controles de usuario
-2 Rectángulos que representan el 2 secciones diferentes de la tierra (tanto en el movieclip misma biblioteca)
Mi círculo tiene el nombre de instancia "ball_mc". El 2 movieclips terreno no tienen nombres de instancia porque al final tendrá muchos clips de película más terreno. Yo no quiero escribir un nuevo trozo de código para cada movieclip suelo, sólo quiero unirlas todas a la misma clase.
AS no se encuentra en el escenario. Tengo una clase de documento denominado "Ball.as" este contiene todas las variables y funciones que el control del personaje. Mis vínculos movieclip círculo de esta clase.
Mis vínculos movieclip terreno a la "clase Ground.as". Esta clase contiene una HitTest. Básicamente, "cuando la bola golpea este objeto, la bola se detiene."
Así que este "Ground.as" clase tiene que ser capaz de ajustar las variables de la "clase Ball.as" documento. Así que la VARS deben ser públicos.
Heres mi código:
Clase de documento Ball.as:
Ground.as:
Como están las cosas ahora estoy teniendo problemas con mi HitTest. El tener algunos problemas con el HitTest enterFrame. Cuando ejecuto la película me sale el siguiente error repitiendo constantemente, mientras que el enterFrame dice:
Tipo de error: Error de #1009: No se puede acceder a una propiedad o método de una referencia de objeto nulo. en la Zona / hitcheck ()
He intentado quitar el HitTest causantes de los problemas: "stage.addEventListener (Event.ENTER_FRAME, hitCheck);" Y yo lo reemplazó con "trace (_ball_mc);"
Los rendimientos de salida "nulo". Mi conjetura es que el objeto en tierra es una instancia en el escenario antes de que el objeto de pelota.
¿Sabe usted de una forma de evitar esto?
Im que hace un juego de plataformas de base
Tengo 3 clips de película en el escenario:
-Un círculo que representa el carácter que los controles de usuario
-2 Rectángulos que representan el 2 secciones diferentes de la tierra (tanto en el movieclip misma biblioteca)
Mi círculo tiene el nombre de instancia "ball_mc". El 2 movieclips terreno no tienen nombres de instancia porque al final tendrá muchos clips de película más terreno. Yo no quiero escribir un nuevo trozo de código para cada movieclip suelo, sólo quiero unirlas todas a la misma clase.
AS no se encuentra en el escenario. Tengo una clase de documento denominado "Ball.as" este contiene todas las variables y funciones que el control del personaje. Mis vínculos movieclip círculo de esta clase.
Mis vínculos movieclip terreno a la "clase Ground.as". Esta clase contiene una HitTest. Básicamente, "cuando la bola golpea este objeto, la bola se detiene."
Así que este "Ground.as" clase tiene que ser capaz de ajustar las variables de la "clase Ball.as" documento. Así que la VARS deben ser públicos.
Heres mi código:
Clase de documento Ball.as:
Código: [ Select ]
package
{
import flash.ui.Keyboard;
import flash.events.*;
import flash.display.*;
public class Ball extends MovieClip
{
public var leftDown:Boolean = false;
public var rightDown:Boolean = false;
public var jump:Boolean = false;
public var velocity:Number = 20;
public var falling:Boolean = false;
public var speed:int = 5;
public function Ball()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, downDetect);
stage.addEventListener(KeyboardEvent.KEY_UP, upDetect);
stage.addEventListener(Event.ENTER_FRAME, moveChar);
}
public function downDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = true;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = true;
}
if(event.keyCode == Keyboard.UP && !falling)
{
jump = true;
}
}
public function upDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = false;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = false;
}
}
public function moveChar(event:Event):void
{
if (leftDown)
{
this.x -= speed;
}
if (rightDown)
{
this.x += speed;
}
if (jump)
{
this.y -= velocity;
velocity -= 1.5;
}
}
}
}
{
import flash.ui.Keyboard;
import flash.events.*;
import flash.display.*;
public class Ball extends MovieClip
{
public var leftDown:Boolean = false;
public var rightDown:Boolean = false;
public var jump:Boolean = false;
public var velocity:Number = 20;
public var falling:Boolean = false;
public var speed:int = 5;
public function Ball()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, downDetect);
stage.addEventListener(KeyboardEvent.KEY_UP, upDetect);
stage.addEventListener(Event.ENTER_FRAME, moveChar);
}
public function downDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = true;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = true;
}
if(event.keyCode == Keyboard.UP && !falling)
{
jump = true;
}
}
public function upDetect(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.LEFT)
{
leftDown = false;
}
if(event.keyCode == Keyboard.RIGHT)
{
rightDown = false;
}
}
public function moveChar(event:Event):void
{
if (leftDown)
{
this.x -= speed;
}
if (rightDown)
{
this.x += speed;
}
if (jump)
{
this.y -= velocity;
velocity -= 1.5;
}
}
}
}
- package
- {
- import flash.ui.Keyboard;
- import flash.events.*;
- import flash.display.*;
- public class Ball extends MovieClip
- {
- public var leftDown:Boolean = false;
- public var rightDown:Boolean = false;
- public var jump:Boolean = false;
- public var velocity:Number = 20;
- public var falling:Boolean = false;
- public var speed:int = 5;
- public function Ball()
- {
- stage.addEventListener(KeyboardEvent.KEY_DOWN, downDetect);
- stage.addEventListener(KeyboardEvent.KEY_UP, upDetect);
- stage.addEventListener(Event.ENTER_FRAME, moveChar);
- }
- public function downDetect(event:KeyboardEvent):void
- {
- if(event.keyCode == Keyboard.LEFT)
- {
- leftDown = true;
- }
- if(event.keyCode == Keyboard.RIGHT)
- {
- rightDown = true;
- }
- if(event.keyCode == Keyboard.UP && !falling)
- {
- jump = true;
- }
- }
- public function upDetect(event:KeyboardEvent):void
- {
- if(event.keyCode == Keyboard.LEFT)
- {
- leftDown = false;
- }
- if(event.keyCode == Keyboard.RIGHT)
- {
- rightDown = false;
- }
- }
- public function moveChar(event:Event):void
- {
- if (leftDown)
- {
- this.x -= speed;
- }
- if (rightDown)
- {
- this.x += speed;
- }
- if (jump)
- {
- this.y -= velocity;
- velocity -= 1.5;
- }
- }
- }
- }
Ground.as:
Código: [ Select ]
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class Ground extends MovieClip
{
private var _ball_mc:MovieClip;
public function Ground()
{
_ball_mc = parent.getChildByName("ball_mc") as MovieClip;
stage.addEventListener(Event.ENTER_FRAME, hitCheck);
}
public function hitCheck(event:Event):void
{
if (_ball_mc.hitTestObject(this))
{
_ball_mc.y = this.y - (this.height*1.4);
_ball_mc.jump = false;
_ball_mc.falling = false;
_ball_mc.velocity = 20;
}
else if (!_ball_mc.hitTestObject(this) && !_ball_mc.jump)
{
_ball_mc.falling = true;
_ball_mc.jump = false;
_ball_mc.y += 16;
}
}
}
}
{
import flash.display.MovieClip;
import flash.events.Event;
public class Ground extends MovieClip
{
private var _ball_mc:MovieClip;
public function Ground()
{
_ball_mc = parent.getChildByName("ball_mc") as MovieClip;
stage.addEventListener(Event.ENTER_FRAME, hitCheck);
}
public function hitCheck(event:Event):void
{
if (_ball_mc.hitTestObject(this))
{
_ball_mc.y = this.y - (this.height*1.4);
_ball_mc.jump = false;
_ball_mc.falling = false;
_ball_mc.velocity = 20;
}
else if (!_ball_mc.hitTestObject(this) && !_ball_mc.jump)
{
_ball_mc.falling = true;
_ball_mc.jump = false;
_ball_mc.y += 16;
}
}
}
}
- package
- {
- import flash.display.MovieClip;
- import flash.events.Event;
- public class Ground extends MovieClip
- {
- private var _ball_mc:MovieClip;
- public function Ground()
- {
- _ball_mc = parent.getChildByName("ball_mc") as MovieClip;
- stage.addEventListener(Event.ENTER_FRAME, hitCheck);
- }
- public function hitCheck(event:Event):void
- {
- if (_ball_mc.hitTestObject(this))
- {
- _ball_mc.y = this.y - (this.height*1.4);
- _ball_mc.jump = false;
- _ball_mc.falling = false;
- _ball_mc.velocity = 20;
- }
- else if (!_ball_mc.hitTestObject(this) && !_ball_mc.jump)
- {
- _ball_mc.falling = true;
- _ball_mc.jump = false;
- _ball_mc.y += 16;
- }
- }
- }
- }
Como están las cosas ahora estoy teniendo problemas con mi HitTest. El tener algunos problemas con el HitTest enterFrame. Cuando ejecuto la película me sale el siguiente error repitiendo constantemente, mientras que el enterFrame dice:
Tipo de error: Error de #1009: No se puede acceder a una propiedad o método de una referencia de objeto nulo. en la Zona / hitcheck ()
He intentado quitar el HitTest causantes de los problemas: "stage.addEventListener (Event.ENTER_FRAME, hitCheck);" Y yo lo reemplazó con "trace (_ball_mc);"
Los rendimientos de salida "nulo". Mi conjetura es que el objeto en tierra es una instancia en el escenario antes de que el objeto de pelota.
¿Sabe usted de una forma de evitar esto?
Página 1 de 1
Para responder a este tema que necesita para ingresar o registrarse. Es gratis.
Publicar Información
- Total de mensajes en este tema: 3 mensajes
- Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 35 invitados
- No puede abrir nuevos temas en este Foro
- No puede responder a temas en este Foro
- No puede editar sus mensajes en este Foro
- No puede borrar sus mensajes en este Foro
- No puede enviar adjuntos en este Foro
