El problema viene cuando hago que el juego empiece en el frame 2. Para hacer la prueba pongo a mano un boton en el frame 1 que conduzca al frame 2. En la clase constructora "Joc" tengo un currentFrame que se encarga de mirar el frame en el que se encuentra, y un switch para, segun en que frame se encuentre, construir y remover lo que toque.
Soy bastante novato en todo lo que se refiere a actionscript, ni 2 ni 3 ni nada, pero creo que hasta aqui voy bien.
Cuando lo ejecuto, sale el boton que coloque manualmente en el frame 1, hago click y se construye todo, y todo va bien excepto aquello cuyo funcionamiento depende de una funcion event:TimerEvent.
TypeError: Error #1010: Un término no está definido y no tiene propiedades.
at codi::Energia_contador/sube_baja_energia()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
Salen muchos errores como ese, Energia_contador es el nombre de una clase que peta y sube_baja_energia una funcion que hay dentro de esa clase de tipo event:TimerEvent. He mirado todos los errores que da al ejecutar y todas las funciones son de ese tipo, aquellas funciones que no dependen de un event:TimerEvent funcionan bien.
Código ActionScript :
package codi
{
import flash.display.MovieClip;
import flash.events.*;
import flash.display.*;
import flash.utils.Timer;
import codi.Escenari;
import codi.Escenari1;
import codi.Escenari2;
import codi.Escenari3;
import codi.Velocimetro;
import codi.Coche_prota;
import codi.Carril1;
import codi.sonido;
import codi.Estatico;
public class Joc extends MovieClip
{
var carretera:MovieClip;
var pers:MovieClip;
var speed:MovieClip;
var carril_arriba:MovieClip;
var bateria:MovieClip;
var barra_energia:MovieClip;
var comprobarframe1:Boolean = true; //Para que solo construya una vez dentro del frame 1
var comprobarframe2:Boolean = true; //Para que solo construya una vez dentro del frame 2
public function Joc()
{
addEventListener(Event.ENTER_FRAME, comprobarFrame);
function comprobarFrame(e:Event)
{
switch (currentFrame)
{
case 1 :
if (comprobarframe1 == true)
{
trace("hola 1!!");
comprobarframe1 = false;
}
break;
case 2 :
if (comprobarframe2 == true)
{
trace("hola 2!!");
carretera = new Estatico();
carretera.name = "estatico";
stage.addChild(carretera);
carretera = new Escenari3(stage,this);
carretera.name = "edificio3";
stage.addChild(carretera);
carretera = new Escenari2(stage,this);
carretera.name = "edificio2";
stage.addChild(carretera);
carretera = new Escenari1(stage,this);
//carretera.name = "edificio1";
stage.addChild(carretera);
carretera = new Escenari(stage,this);
//carretera.name = "carretera1";
stage.addChild(carretera);
carril_arriba = new Carril1(stage,this);
carril_arriba.name = "carriles";
stage.addChild(carril_arriba);
pers = new Coche_prota(stage,carril_arriba);
pers.name = "personatge";
stage.addChild(pers);
speed = new Velocimetro(stage,this);
stage.addChild(speed);
barra_energia = new Energia_contador(stage,this);
barra_energia.name = "hud_energia";
stage.addChild(barra_energia);
comprobarframe2 = false;
}
break;
}
}
}
}
}Cualquier critica sera bien recibida, no tengo mucha idea y cualquier cosa que sirva para mejorar sera probada, asi que muchas gracias a los que hayais leido hasta aqui abajo
