Clase Pan en Flash AS3

Tengo un clip de película y voy a agregarle una función de panorámica. Quiero agregar la panorámica como su propia clase a la que puede hacer referencia el clip de película.

Cuando creo la clase de panorama, le envío el movieclip para tener sus propiedades de posición en todo momento.

¿Cuál es la mejor manera de acceder al escenario en la clase de pan? Tendré que poder obtener el escenario mouseX, mouseY, stageWidth y stageHeight.

En este momento, tengo la clase pan que extiende un objeto sprite y lo agrega como un elemento secundario del movieclip que quiero panoramizar.

¿Sería mejor simplemente enviar el escenario a la clase de panorama o hay una mejor manera que esta?

preguntado el 12 de junio de 12 a las 21:06

La forma correcta sería hacer que la clase pan extienda MovieClip y luego, en lugar de convertir su MovieClip en un MovieClip, lo convierta en una instancia de la clase Pan. Entonces se heredarán todas las propiedades de la clase MovieClip. -

Tendré una clase de zoom y otras clases posibles que van a usar el clip de película que se está desplazando, así que no creo que pueda hacer que amplíe todos esos elementos diferentes. -

1 Respuestas

Cree una clase singleton que administre los cambios en la etapa llamada StageManager e inicialízalo pasándole una referencia al escenario:

//StageManager.as

import flash.display.Stage;

public class StageManager()
{
    //publicly accessible singleton instance
    public static var instance:StageManager = new StageManager();

    private var m_stage:Stage;

    //I'm using a custom getter and setter in just in case you need perform some other 
    //initialization when the stage gets set...
    public function set stage(stg:Stage):void
    {
        m_stage = stg;
    }

    public function get stage():Stage
    {
        return m_stage;
    }

}

Luego, en otro lugar, como tu clase de controlador principal:

StageManager.instance.stage = this.stage; 

Ahora puede acceder al escenario y sus propiedades globalmente a través del StageManager:

var stageW:int = StageManager.instance.stage.stageWidth; 

De esta manera, no solo su clase Pan, sino cualquier otra persona en el futuro puede acceder al escenario global en cualquier momento que lo necesite. Muy bien, ¿eh?

En cuanto a cómo diseñar tu clase Pan, estoy de acuerdo con @The_asMan - extender MovieClip. A menos que, es decir, uno Pan la instancia controlará varios MovieClip instancias, entonces probablemente tendría más sentido tenerlo como algo propio (la forma en que lo describe arriba).

Respondido el 14 de junio de 12 a las 00:06

A partir de ahora, la clase Pan solo controlará otro clip de película, pero las futuras adiciones a mi programa podrían tenerlo funcionando también para otros clips, por eso quería tenerlo separado. - Sean

Intenté implementar el código y recibo errores. Dice que no se encontró el escenario o que no era una constante de tiempo de compilación en la clase stageManager. Creo que necesita pasar de etapa a la de la clase principal. - Sean

Yo tengo que trabajar. Necesitaba agregar 'importar flash.display.Stage;' a la clase StageManager. - Sean

¡Me alegra que lo hayas resuelto! Y sí, sería una buena idea importar el Stage clase;) Haré una edición en la respuesta para incluir esa línea. - Ian

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.