Pregunta

Estoy creando una subclase de MovieClip (vamos a llamarlo MyClip) que desea utilizar para varios elementos de bibliotecas. Voy a crear instancias de estos clips de película de código ActionScript. MyClip tiene un parámetro de constructor que le permite establecer los valores iniciales de ciertas propiedades.

Ya que quiero utilizarlo para múltiples elementos de bibliotecas, el camino lógico para hacerlo parece que lo especifique en el cuadro de texto "base de la Clase" en el diálogo "Propiedades de símbolo". El problema es que las subclases generados automáticamente no tienen el constructor con el parámetro. En su lugar, Flash intenta generar con solamente un constructor por defecto, que también falla porque MyClip no tiene un constructor por defecto.

¿Hay alguna forma de evitar esto, además de aplazar la inicialización propiedad a un método normal?

Editar No he sido lo suficientemente claro, voy a tratar de aclarar aquí. Si esta es la clase MyClip:

public class MyClip extends MovieClip
{
    private var someValue : Number;

    public function MyClip(someValue : Number)
    {
        this.someValue = someValue;
    }
}

y he especificado MyClip como clase base para el símbolo MyClipA en la biblioteca, lo que idealmente le gustaría ser capaz de hacer clip = new MyClipA(17); sin tener que escribir la clase MyClipA mí mismo.

¿Fue útil?

Solución

Estoy asumiendo que la razón por la que necesita para crear y MyClipA MYClipB, etc clases es unir arte diferente a los objetos que sólo tiene el comportamiento de un objeto myClip?

Tal vez usted podría acercarse de otra manera, hacer que su clase base - myClip como lo tienes tu ejemplo, aceptar aruguments 2, uno de los cuales es una referencia a la técnica:

public class MyClip extends MovieClip
{
    public var art:ArtBaseClass
    private var someValue : Number;

    public function MyClip(someValue : Number, artClass:ArtBaseClass)
    {
        this.someValue = someValue;
        this.art = new artClass();
        this.addChild(art);
    }
}

Y se podría definir cualquier otra cosa que necesita en un ArtBaseClass que se aplica a cada uno de estos objetos de arte de la biblioteca.

Otros consejos

No creo que realmente se puede hacer. Pero si se puede hacer, de forma adecuada estará con el prototipo. Tal vez se puede cambiar el contructor de cada una de las clases predeterminadas.

Trate de especificar los argumentos por defecto para el constructor (null como un valor especial, tal vez?). A continuación, añadir un poco de comprobación de errores en el inicio del constructor que establece los valores iniciales adecuados para su clip de película. Es muy hacky, pero por lo que sé que no hay una mejor manera de hacerlo utilizando el arrastrar y soltar la animación de la interfaz de usuario (sólo se puede hacerlo a través de código).

Si se topó con esto también. La forma correcta de resolverlo es crear clases para MyClipA y MyClipB que heredan de myClip. Esto puede ser engorroso si hay gran cantidad de clases que se basan en myClip. Por otra parte, si ese es el caso, es posible que desee comenzar a pensar acerca del uso de la composición en lugar de la herencia de todos modos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top