Foros del Web » Creando para Internet » Flash y Actionscript »

AS3: Dónde posicionar el código y lios con packages, .as, y demás

Estas en el tema de AS3: Dónde posicionar el código y lios con packages, .as, y demás en el foro de Flash y Actionscript en Foros del Web. Hola gente. A ver. Después de mucho investigar llego a un punto muerto. Tengo un lio de narices con Action Script 3. A ver si ...
  #1 (permalink)  
Antiguo 04/07/2009, 07:49
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
AS3: Dónde posicionar el código y lios con packages, .as, y demás

Hola gente.

A ver. Después de mucho investigar llego a un punto muerto.


Tengo un lio de narices con Action Script 3.
A ver si por fin me quito este problema porque llevo mucho tiempo queriendo aprender y siempre me quedo encajada con esto en Flash.



Realmente no sé dónde poner el código. No se si hacer una clase asociada al fla, o qué. He probado a comenzar en el primer frame. Carga un XML en el primero y guarda los datos en una variable.

Ok. Funciona!, ahora quiero poner que se creen muchos botones iguales para cada sección del xml en el swf... quiero hacer una clase boton nueva...

¿Dónde demonios la pongo??.
Mis dudas son... hago un archivo .as? sirve de mucho? o pongo el código en el frame... y eso como leches lo hago , si pongo package{} me dice que no puedo anidar packages. Si pongo class, me dice que no puedo anidar clases...
Si incluyo el archivo no me vale. Lo importo? realmente ya no sé qué hacer. Cómo posicionar los archivos.
Dónde demonios puedo poner las cosas y como lo hago para qeu funcione??. Dönde se pone el código de todos esos estupendos tutoriales que vienen que son packages todos??



Si hago un main.as para tener el control, se ejecuta al rpincipio. De qué sirve tener esto? hasta que punto... sirve hacer todo esto en programación y no con lineas de tiempo?. Por ejemplo, para mi caso, estoy perdida:
son muchos menús que van saliendo y cargando cosas. Los datos, todos los sacad de varios xml. Dónde leches gestiono todo esto? en los frames? en un archivo main? y si es así... como? porque el main cuando carga xml... ejecuta una función de completado y solo entonces se podrían generar los botones.:. pero como hago eso yo... desde un archivo main?? haciendo referencias a los clips y los frames?... realmente tiene utilidad esto?


Soluciones:
- Poner cosas en fotogramas y que ellos mismos gestionen los saltos que pegan... no tengo ni la más remota idea. (supongo que haciendose a si mismos goToAndPlay y eso.



Como veis son todo problemas de dónde poner el código. La decisión, cuál es mejor, dado que todo lo que haré yo son cosas de cargandose cosas, y abriendose menús de texto todos...
se podría hacer todo en programación? incluido los loader, que son clips de video que activo y desactivo a mi placer??



Muchísimas gracias
__________________
Darkgaze
  #2 (permalink)  
Antiguo 04/07/2009, 14:33
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Bien vamos a ver... No te recomiendo programar por frames, ya que es cuanto enredado.

Los packages son conjuntos de clases. Cada una de estas clases está en un archivo .as independiente, el cual, debe poseer el mismo nombre que la clase que está describiendo, ejemplo:

Tengo una clase Reloj:

Reloj.as

Código actionscript:
Ver original
  1. package com.clases.utiles {
  2.     public class Reloj... { ... }
  3. }
com.clases.utiles es el package, el cual, indica que mi clase Reloj, está en el directorio com/clases/utiles de mi aplicación. Si estubiera en la raiz, pues simplemente, no pondríamos nada (solo package {...).

Un package puede tener tantas clases como quieras poner en ese directorio.

Para programar packages y clases, antes de nada, te recomiendo que te crees una clase base para el programa (archivo, nuevo, documento AS), quiero decir:

Código actionscript:
Ver original
  1. package {
  2.     public class Main extends MovieClip {
  3.         public function Main() { }
  4.     }
  5. }

y la guardas en el mismo directorio que tu .Fla con el nombre Main.as. Asocias tu película ("clase base") a esta clase, simplemente poniendo en el cuadrito "Main" (por que está en la raiz, si estubiera en un subdirectorio pondrías el package de la clase mas la clase, por ejemplo com.clases.utiles.Reloj).

En esta clase tendrás que hacer referencia al resto de clases que tengas, pero, cómo puedo yo utilizar desde aquí una clase que tengo en otro package?, muy sencillo:

Código actionscript:
Ver original
  1. package {
  2.     import com.clases.utiles.Reloj;
  3.  
  4.     public class Main extends MovieClip {
  5.         public function Main() {
  6.                 var clock:Reloj = new Reloj();....
  7.                 ...
  8.         }
  9.     }
  10. }

Ya puedo utilizar la clase reloj.

Podrás importar un package completo utilizando el símbolo "*". Por ejemplo, si en com.clases.utiles hubieran 5 o 6 clases que vas a utilizar, simplemente poniendo:

Código actionscript:
Ver original
  1. import com.clases.utiles.*;

importarías el package completamente sin necesidad de indicar una a una las clases que necesitas.

Te recomiendo que te descarges el FlashDevelop de http://www.flashdevelop.org/, te ayudará muchismo a desarrollar aplicaciones en flash, ya que el entorno de desarrollo de este es super incómodo, que hace un programador picando codigo al lado de una paleta de colores?

Espero haber sido claro.. cualquier duda, consulta ;)
  #3 (permalink)  
Antiguo 05/07/2009, 02:57
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Estupendo! Estupendísimo. Si lo hubiera leído antes me hubiera ahorrado la tarde de ayer.

Al final conseguí entenderlo después de todo, así que todo esto lo deducií y funcionó. Muchísimas gracias.


Eso responde a gran parte de mis dudas. Pero permanecen otras...



Ya he visto que programar en frames es solo si quieres hacer dibujos o cosas así.


en otro caso, lo que estoy haciendo es generar todo dinámicamente. o sea, como si fuera java ya, y eso es todo. O sea, que tienes el fla de soporte pero en realidad este tiene sólo un frame. Es así?


Ahora... cómo meto cosas animadas?. Puedo crear a mano clips de película en la biblioteca y utilizarlos dentro del código? es lo único que me falta.

Y para hacer cargadores o establecer estados (cargando -> mostrar menu -> cargar -> mostrar submenú... etc) en la aplicación... tengo que hacerlo a mano?

Pensé seriamente en establecer varios frames en la película, y cuando pasa de un estado cambiar de frame. O cómo lo hacéis vosotros?



Ya lo estoy pillando, gracias por la ayuda.
__________________
Darkgaze
  #4 (permalink)  
Antiguo 05/07/2009, 06:49
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Olivdate de utilizar varios frames.

Puedes instanciar cualquier objeto de la biblioteca, siempre y cuando en las propiedades de este hayas marcado "Exportar para ActionScript". Ejemplo

Tengo un Clip de pelicula en la biblioteca, su nombre es "Reloj", y su nombre para actionscript "Reloj". Bien, pues simplemente:

Código actionscript:
Ver original
  1. package {
  2.     import flash.dysplay.MovieClip;
  3.  
  4.     public class Main extends MovieClip {
  5.         public function Main() {
  6.             var a:Reloj = new Reloj();
  7.             addChild(a);
  8.         }
  9.     }
  10. }

Con esto, habrás instanciado y añadido a la visualización el Clip "Reloj" de la biblioteca, este puede tener su propia linea de tiempo y poseer animaciones e incluso código.

Si quieres crear animaciones desde código, investiga sobre la clase Tween de flash, o las librerías TweenMax y TweenLite que encontrarás en internet.

Respecto a las precargas, solo tendrás que utlizarlas si usas elementos externos, como por ejemplo imágenes, documentos XML... Investiga sobre la clase Loader de flash ;)

Espero haber ayudado
  #5 (permalink)  
Antiguo 05/07/2009, 08:49
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Ahh.. ya veo. Pero si este movie clip tiene animación ya hecha... puedo hacer play, stop, y todo eso, no?. Yo creo que con eso me basta!
__________________
Darkgaze
  #6 (permalink)  
Antiguo 05/07/2009, 10:19
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Lo del stop() lo puedes seguir utilizando de la forma que creas conveniente aunque también se puede hacer por código,pero a veces resulta mucho mas fácil hacerlo directamente en la linea de tiempo que a través del código XDXD

de todos modos esto es complicado al inicio y la mayoría se queja pero si le dedicas un poco te das cuenta enseguida que aunque parezca difícil esto te abre un montón de posibilidades y te acostumbras mas rápido de lo que realmente parece

PD: muy buena explicación eSSeneX felicidades XDXD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #7 (permalink)  
Antiguo 05/07/2009, 11:29
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

La verdad, hace falta un sitio donde aprender este tipo de cosas...

Con la ayuda de adobe me costó muchisimo entender esto...
  #8 (permalink)  
Antiguo 05/07/2009, 16:34
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

jejeje es posible pero aunque la verdad no me costo tanto porque estoy habituado a programar en mas lenguajes,pero si lees bien la ayuda de flash no hace falta mucho bueno creo yo nose los demás como piensen XDXD de todos modos programar es mas lógica que lenguaje
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #9 (permalink)  
Antiguo 05/07/2009, 16:52
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Si si. lynxcraft. Yo también programo en muchas cosas y a mi no me está costando nada nada. Es como Java.

Lo que nos pasa a los programadores de andar por casa es que no nos cuadra lo de las lineas de tiempo, que haya más cosas, que haya biblioteca de recursos, y todo eso. A mi me descuadra por completo.


No entiendo por que dices que lo de stop() lo puedo hacer por código... xDD... ¿no es eso ya programar??... no se usa stop y play?


Porfa, explicadme nada más que eso: Para poner una pequeña animación que me haga, por ejemplo para cargar, o para hacer de fondo (habrá unas ruedas girando y eso, pero será complejo, tal vez un video!, ya veré...), tengo que crear una instancia de ese elemento... que por cierto, ¿añado a mano a la biblioteca?, y luego hacerle play o qué? más o menos por encima. Dispongo de muchos libros aquí, pero es nada más en lineas generales.... ¿es así como se hace?



Al final ya voy pillándolo, si. tienes razón.
__________________
Darkgaze
  #10 (permalink)  
Antiguo 05/07/2009, 16:54
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Si si. lynxcraft. Yo también programo en muchas cosas y a mi no me está costando nada nada. Es como Java.

Lo que nos pasa a los programadores de andar por casa es que no nos cuadra lo de las lineas de tiempo, que haya más cosas, que haya biblioteca de recursos, y todo eso. A mi me descuadra por completo.


No entiendo por que dices que lo de stop() lo puedo hacer por código... xDD... ¿no es eso ya programar??... no se usa stop y play?


Porfa, explicadme nada más que eso: Para poner una pequeña animación que me haga, por ejemplo para cargar, o para hacer de fondo (habrá unas ruedas girando y eso, pero será complejo, tal vez un video!, ya veré...), tengo que crear una instancia de ese elemento... que por cierto, ¿añado a mano a la biblioteca?, y luego hacerle play o qué? más o menos por encima. Dispongo de muchos libros aquí, pero es nada más en lineas generales.... ¿es así como se hace?



Al final ya voy pillándolo, si. tienes razón.
__________________
Darkgaze
  #11 (permalink)  
Antiguo 05/07/2009, 18:25
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Stop y Play son métodos de la clase MovieClip, detienen la película en un fotograma concreto y la harán avanzar, no tiene mas, no entiendo tu pregunta.

Tu creas el elemento normal en la biblioteca, lo exportas para actionscript. Utiliza el nombre de la clase de actionscript para instanciarlo, directamente se supone que se reproducirá. Con los métodos que te he comentado podrás detenerlo y avanzar..
  #12 (permalink)  
Antiguo 05/07/2009, 19:01
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

jejej bueno si stop() es programar,lo que pasa es que el flash ya tiene metodos de clases predefinidos muy comunes como stop start play etc por lo que me he mal acostumbrado a pensar que eso es un elemento mas del propio flash bamos que se me ha ido la pinza JAJAJa

bueno tengo aquí algunos ejemplos de como utilizar tanto el stop() y la utilización básica de las clases

http://rapidshare.com/files/252430300/ejemplo.rar.html

pero no hay explicación en los ejemplos es para que mires con atención y también para que veas como se puede programar directamente en la linea de tiempo y con archivos AS
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #13 (permalink)  
Antiguo 05/07/2009, 19:36
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Super buenos los ejemplos, te tiene que quedar claro con eso por webos jajaja
  #14 (permalink)  
Antiguo 05/07/2009, 19:44
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Gracias espero que les sirva a los que inician XDXD,,

bueno hasta mañana
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #15 (permalink)  
Antiguo 06/07/2009, 13:10
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Pero es así como lo hacéis entonces? Con esto estoy feliz

A ver si los expertos aquí creéis qu esta es la forma MEJOR de hacerlo, soy muy quisquillosa, necesito opiniones:

- Un .fla vacío que sea el papi default pero no tiene nada de nada.
- La biblioteca con las animaciones hechas en flash... exportadas a AS3.. (no se como se hace, pero ya miraré).
- Cosas externas las cargo en AS3, los XML y los videos, etc
- Inicio en Main.as y hago un proyecto pasando del .fla, como si programara normal, referenciando a la escena y al arbol de visualización de flash (display y todo eso), para que se muestre lo que yo quiero. El resto como en Java (en forma, me refiero)
- No tengo la más remota idea de como hacer los estados:

Carga menú principal y submenús. Muestra solo el menú principal.
Cuando le das a un submenú, carga un XML con datos. Debe haber algún sistema para mostrar que está cargando (con el loader y todo eso, ok), pero esto es un estado distinto. Cómo gestionáis vosotros los estados? simplemente utilizando los eventos complete encadenados??


Gracias chicos. A ver si lo llego a entender. Odio hacer las cosas mal desde el principio.
__________________
Darkgaze
  #16 (permalink)  
Antiguo 06/07/2009, 14:52
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: AS3: Dónde posicionar el código y lios con packages, .as, y demás

Cita:
Iniciado por darkgaze Ver Mensaje
Pero es así como lo hacéis entonces? Con esto estoy feliz

A ver si los expertos aquí creéis qu esta es la forma MEJOR de hacerlo, soy muy quisquillosa, necesito opiniones:

- Un .fla vacío que sea el papi default pero no tiene nada de nada.
- La biblioteca con las animaciones hechas en flash... exportadas a AS3.. (no se como se hace, pero ya miraré).
- Cosas externas las cargo en AS3, los XML y los videos, etc
- Inicio en Main.as y hago un proyecto pasando del .fla, como si programara normal, referenciando a la escena y al arbol de visualización de flash (display y todo eso), para que se muestre lo que yo quiero. El resto como en Java (en forma, me refiero)
- No tengo la más remota idea de como hacer los estados:

Carga menú principal y submenús. Muestra solo el menú principal.
Cuando le das a un submenú, carga un XML con datos. Debe haber algún sistema para mostrar que está cargando (con el loader y todo eso, ok), pero esto es un estado distinto. Cómo gestionáis vosotros los estados? simplemente utilizando los eventos complete encadenados??


Gracias chicos. A ver si lo llego a entender. Odio hacer las cosas mal desde el principio.
Hola darkgaze !

En cuanto al cambio de estados de las pantallas, si todo lo vas a hacer en AS si tendrías que hacerlo de la forma que mencionas, lanzar eventos y capturarlos, y en base a eso cambiar los estados.

La forma en que vas a realizarlo está muy bien, muy similar a un proyecto en JAVA.

Por ejemplo, podrías tener una sección galeria:

Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.display.MovieClip;
  4.    
  5.     public class Gallery extends MovieClip
  6.     {
  7.         var reader:XMLImageReader = new XMLImageReader();
  8.         reader.addEventListener(XMLImageReaderEvent.COMPLETE, onLoadImages);
  9.         reader.load();
  10.     }
  11.    
  12.     private function onLoadImages(evt:XMLImageReaderEvent):void
  13.     {
  14.         var iterator:Iterator = evt.images.getIterator();
  15.         while(iterator.hasNext()) {
  16.             var image:Image = iterator.next() as Image;
  17.             image.addEventListener(ImageEvent.COMPLETE, onLoadImage);
  18.             addChild(image)
  19.         }
  20.     }
  21.    
  22.     private onLoadImage(evt:ImageEvent):void
  23.     {
  24.         dispatchEvent(new GalleryEvent(GalleryEvent.ON_IMAGE, evt.image));
  25.     }
  26. }

Y el punto de entrada:

Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.display.MovieClip;
  4.    
  5.     public class Main
  6.     {
  7.         public static function main(root:MovieClip):void
  8.         {
  9.             var gallery:Gallery = new Gallery();
  10.             root.addChild(gallery);
  11.         }
  12.     }
  13. }

Y desde el .fla:

Código actionscript:
Ver original
  1. Main.main(this);

Si vienes del mundo de JAVA no creo que se te complique, nada mas descompone el problema en pequeños objetos cohesivos, puedes tener una clase Principal que tenga asociada las secciones, y cada sección tiene asociados otros objetos para cumplir con los requerimientos del proyecto.

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:01.