Extendiendo un v2 control en MTASC

Debido a un correo de un usuario de la lista de MTASC que tení­a problemas al extender el componente mx.controls.Button he decidí­do hacer un pequeño ejemplo para comprobar que esto es posible. Lo cierto es que en estos momentos estoy con un proyecto que depende fuertemente de la v2 y lo estoy haciendo con FAME sin ningún problema…salvo una extraordinaria rápidez de compilación ;).

El problema está en que debemos crear un simbolo en nuestro fla al cual poderle inyectar la clase en cuestión. En caso de extender de UIComponent esto no es necesario siempre y cuando tengamos el framework v2 incluido en el SWF.

Lo primero crear un componente con las siguientes caracterí­sticas:

  • Name: ButtonExt
  • Identifier: ButtonExt
  • AS 2.0 Class: com.carlosrovira.controls.ButtonExt

Checkear “export for ActionScript” y “export in first frame”. (nota: A efectos de pruebas rápidas si no seleccionais “export in first frame” , haceis una rápida conversión a clip compilado(“Convert to Compiled Clip”) y arratrais dicho SWF al escenario, también vale). Por último, recordar poner la clase en la definición de componente (en “Component Definition”).

Dentro del clip creado debemos crear la tí­pica estructura que tienen los componentes v2, con su stop() en el primer layer, su boundingBox_mc en el segundo y su tercer layer con una instancia de mx.controls.Button en el segundo frame.

El código mí­nimo para la clase que extiende el botón serí­a:

import mx.controls.Button;

class com.carlosrovira.controls.ButtonExt extends Button {
	
	static var symbolName:String = "ButtonExt";
	static var symbolOwner:Object = ButtonExt;
	var className:String = "ButtonExt";
}

…y una manera de instanciarla en nuestro código, la siguiente:

import com.carlosrovira.controls.ButtonExt;
_root.createClassObject(ButtonExt, "buttonExt", _root.getNextHighestDepth());

En cuanto a parametros en MTASC, usar -mx (En este caso -separate no es necesario a no ser que luego vayas a extender de MovieClip o UIComponent sin tener simbolos en la librerí­a).

Perdonad que sea tan telegráfico pero aunque gracias a MTASC ya no paro para tomar café mientras compilo…¡¡¡¡sigo sin tener un minuto libre!!! ;P

8 Comentarios

  1. Estimado Carlos, puedes darmes los lineamientos sobre FAME en eclipse.
    Tengo todo instalado pero flashout no funciona ..:(.
    Puedo crear projectos y archivos AS2 y tambien flashout, pero este no me funciona.

    saludos.
    Carlos

  2. Hola,

    Los problemas con Flashout suelen ser debidos a que la versión de Eclipse no es la 3.1 o no tienes instalado la version 5 de java. Te aconsejo que visites la lista de correo de osFlash donde este tipo de cosas ya han sido comentadas ampliamente.

    Por último si aún asi tuvieses problemas considera en ejecutar tu eclipse con la opción “-clean”

  3. Epale Carlos! veo que conoces bastante sobre el tema. Y yo estoy probando el MTASC para comenzar a usarlo en proyectos serios. Ya lo tengo bastante recorrido y aprendiendo todos los truquitos, incluso usando AMFPHP.

    La pregunta es la siguiente, Estoy probando la recomendación que hace Moock y Aral de Flash Ant (http://flashant.org/index.php?p=360&c=1) para asignar _root como el espacio para la aplicación, pero luego no le veo sentido tener que identificar la ruta cuando se quiere jalar de la librerí­a un componente de MM, por ejemplo: _root.createClassObject(Button, “button_pb”, 1, {label:”Test Button”});

    Fí­jate que tengo que ponerle “_root”, si no se lo pongo me da error, incluso cuando hago algo con el componente importado siempre tengo que ponérselo. En cambio, si compilo lo mismo desde el Flash IDE pero sin _root funciona perfecto.

    Se que es algo medio tonto, pero es medio fastidioso tener que estar pendiente siempre de ese detalle y no veo ningún ejemplo por ahí­ donde lo usen como quisiera.

    Gracias de antemano, cualquier cosa estamos a la orden, aunque leo bien inglés me gustarí­a intercambiar conocimientos con gente del mismo idioma.

    RAFA3L

  4. hola carlos, como va?
    tenes un zip con este ejemplo, estoy queriendo hacer algo parecido y me gustaria ver este ejemplo.
    desde ya gracias y saludos

  5. Hola Diego, lo siento pero no tengo tal zip 🙁

    …pero de todas formas te pido que intentes reproducir los pasos pues creo que este ejemplo no es dificil de reproducir.

    Saludos.

  6. @RAFA3L

    Rafa, la opción que propone Aral de “asimilar” root es totalmente opcional…yo personalmente no la contemplo, pero tampoco quiero decir que no sea una buena opción. Simplemente son diferentes maneras de ver la manera de desarrollar. (es lo mismo que el debate en ARP sobre la conveniencia de usar ViewHelpers)

    … cada uno debe usar lo que encuentre más lógico y con lo que esté más comodo.

    : )

  7. Carlos, como va?
    trate de reproducir los pasos para extender el componente Button asi como lo mostras, y solo me anda si la instancia del boton la pongo en el primer frame y no en el segundo…
    debe haber algo que debo estar haciendo mal supongo.
    te dejo la url, del ejemplo (donde algo se nota que esta mal, si tenes un minuto y le podes echar un vistazo….) luego si queres usalo para bajar desde tu sitio.

    http://preset.sphilo.com/concepts/buttonExt.rar

    saludos y gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *