2008-09-16 18 views
13

Soy nuevo en ActionScript 3 y me he encontrado con un problema:¿Qué causa el error de Flash # 2012 (no se puede crear una instancia de la clase)?

Utilizando Flex Builder 3, he creado un proyecto con algunas clases simples. Si el código en la clase A instancia un objeto de la clase B (clase B se encuentra en su propio archivo de origen), el código se compila bien, pero me sale el siguiente error de tiempo de ejecución:

ArgumentError: Error #2012: B class cannot be instantiated.

¿Puede alguien explicar lo que estoy haciendo mal?

Actualización: Por favor, vea mi propia respuesta a continuación (No pude votar hasta la cima ya que aún no estoy registrado).

Respuesta

2

Esto generalmente significa que la información de la clase no se incluyó en el archivo SWF.

Asegúrese de que está importando la clase y de que hay una referencia en algún lugar (para que el compilador la incluya en el archivo SWF).

por cierto, aquí están los códigos de error de tiempo de ejecución:

http://livedocs.adobe.com/flex/201/langref/runtimeErrors.html

(no hay mucha información útil aunque)

cámaras mike

[email protected]

21

finalmente me di cuenta de lo que estaba mal: Clase B fue de subclases de DisplayObject la que veo ahora es una clase abstracta. La clase B no implementó los miembros abstractos, por lo tanto el error. Probablemente cambie la clase B a la subclase de Sprite.

Parece un problema que el compilador debería haber captado. ¿El hecho de que no fue una implementación mala de miembros abstractos puede esperar hasta el tiempo de ejecución? Incluso si es así, sería bueno al menos obtener una advertencia de compilación.

Gracias por las respuestas de todos, es de esperar que ayudarán a otros que se ejecutan en el error 2012.

+1

No puede ser atrapado por el compilador ya que no hay palabra clave abstracta que el compilador puede recogerlo en. Se impone mediante lanzamiento, de ahí el error. – NebulaFox

Cuestiones relacionadas