我正在研究AS3,我得到了一个错误1007 ......好吧,真的不知道。这是有问题的代码(一些函数和变量是西班牙语,对不起)
public class Prueba extends Escena
{
public function Prueba()
{
super();
//HERE IS WHERE IT EXPLODES
AgregarLinea(
"Prueba 1",
new Nerea());
AgregarLinea(
"Prueba 2",
Actor.ARIEL);
AgregarLinea(
"Prueba 3",
Actor.ARIEL);
}
}
当我尝试调用函数“AgregarLinea”时,错误会跳进去。我尝试了几种方式实例化,但我没有运气。以下是相关代码的其余部分:
public class Escena
{
public var lineaActual:int;
public var listaLineas:Vector.<Linea>;
public var fondoEscena:Sprite;
public function Escena()
{
lineaActual = 0;
listaLineas = new Vector.<Linea>();
}
//PRE:
//POS: Se devuelve la lista correspondiente al momento actual
public function ObtenerLinea():Linea {
var ret:Linea=null;
if (lineaActual < listaLineas.length) {
ret = listaLineas[lineaActual];
lineaActual++;
}
return ret;
}
public function AgregarLinea(dialogo:String, actor:Actor = null, posActor:Point = null, gesto:String = "normal") {
trace("Entro a AgregarLinea");
listaLineas.push(new Linea(dialogo, actor, posActor, gesto));
trace("Salgo de AgregarLinea");
}
}
那里没有太多的谜。 “Prueba”的父类。其他类是这两个:
public class Actor extends MovieClip
{
public var nombre:String;
public var colorTexto:int = 0x000000;
public var formatoTexto:TextFormat;
public function Actor() {
super();
}
//PRE: "gesto" es el nombre de etiqueta de alguno de los fotogramas del objeto
//POS: Se cambia de fotograma al especificado
public function CambiarGesto(gesto:String) {
this.gotoAndStop(gesto);
}
//LISTA DE ACTORES DISPONIBLES
public static var ARIEL:Actor = new Ariel();
public static var NEREA:Actor = new Nerea();
}
和
public class Nerea extends Actor
{
public function Nerea()
{
super();
nombre = "Nerea";
}
}
我不知道到底是什么问题。这是一个非常简单直接的代码,但它说它无法实例化。由于错误从那里激增,因此类Actor存在一些问题:
at Actores::Actor$cinit()
at global$init()
at global$init()
答案 0 :(得分:0)
很明确问题是静态变量以及它是如何实例化的。 试试这个。
public class Actor extends MovieClip
{
public var nombre:String;
public var colorTexto:int = 0x000000;
public var formatoTexto:TextFormat;
public function Actor() {
super();
}
//PRE: "gesto" es el nombre de etiqueta de alguno de los fotogramas del objeto
//POS: Se cambia de fotograma al especificado
public function CambiarGesto(gesto:String) {
this.gotoAndStop(gesto);
}
//LISTA DE ACTORES DISPONIBLES
private static var _ARIEL:Actor;
private static var _NEREA:Actor;
public static function get ARIEL():Actor{
if(!_ARIEL){
_ARIEL = new Ariel();
}
return _ARIEL;
}
public static function get NEREA():Actor{
if(!_NEREA){
_NEREA= new Nerea();
}
return _NEREA;
}
}