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

Realizar Multimedia en AS3

Estas en el tema de Realizar Multimedia en AS3 en el foro de Flash y Actionscript en Foros del Web. Buenas tardes para todos. Desea empezar a trabajar con AS 3, pero se que ha tenido grandes cambios en su sintaxis, por eso quería hacer ...
  #1 (permalink)  
Antiguo 01/06/2010, 13:27
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Pregunta Realizar Multimedia en AS3

Buenas tardes para todos.

Desea empezar a trabajar con AS 3, pero se que ha tenido grandes cambios en su sintaxis, por eso quería hacer una serie de preguntas antes de comenzar con la multimedia.

1. Todavia se utiliza fscommand("fullscreen", "true");, o ya se emplea algo distinto. Sí es el caso cual sería.

2. Yo utilizaba la clase Stage.scaleMode = 'noScale';, colocaba un mc que es una imagen de fondo y este se me redimensionaba seguna el monitor, osea que me quedaba un imagen de fondo. Si cambio la clase Stage o se emplea de otra forma cual es?.

3. Como programo ya los botónes con as3

4. Como cambio el color de un mc con as3

5. Como le doy un filtro a un mc con as3

Gracias por su ayuda
__________________
Diseñador Gráfico publicitario
  #2 (permalink)  
Antiguo 01/06/2010, 15:32
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola

1. Todavia se utiliza fscommand("fullscreen", "true");, o ya se emplea algo distinto. Sí es el caso cual sería.

Puedes usar fscommand, si te da inconvenientes prueba antes de usarlo
a importar a este muchacho:

Código actionscript:
Ver original
  1. import flash.system.fscommand;

si persiste inconveniente intenta cambiarlo por

Código actionscript:
Ver original
  1. import flash.display.StageDisplayState;
  2. stage.displayState = StageDisplayState.FULL_SCREEN;

2. Yo utilizaba la clase Stage.scaleMode = 'noScale';, colocaba un mc que es una imagen de fondo y este se me redimensionaba seguna el monitor, osea que me quedaba un imagen de fondo. Si cambio la clase Stage o se emplea de otra forma cual es?.

Código actionscript:
Ver original
  1. import flash.display.StageScaleMode;
  2. stage.scaleMode = StageScaleMode.NO_SCALE;
o podrías darle otros valores

3. Como programo ya los botónes con as3
Bueno, si te refieres a como agregar listeners entonces
sería algo como

Código actionscript:
Ver original
  1. import flash.events.MouseEvent;
  2. boton.addEventListener(MouseEvent.CLICK, funcionclic);
  3.  
  4. function funcionclic(e:MouseEvent):void{
  5. trace("ME DIERON CLICK!!!);
  6. }

4. Como cambio el color de un mc con as3
Necesitas hacer uso de colorTransform, así

Código actionscript:
Ver original
  1. import flash.geom.ColorTransform;
  2. //red en 10, green en 20, y blue en 30
  3. var color:ColorTransform = new ColorTransform(10,20,30);
  4. mc.transform.colorTransform = color;

5. Como le doy un filtro a un mc con as3
De este tema si casi no lo he tocado pero al parecer es algo así:

Código actionscript:
Ver original
  1. import flash.filters.ColorMatrixFilter;
  2. var array:Array = [10,20,30];
  3. filtro = new ColorMatrixFilter(array);
  4. mc.filters = [filtro];

Espero te sirva
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 02/06/2010, 06:41
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador.
Gracias por tu ayuda, me ha sido muy útil. Era lo que buscaba.

Te hago otras preguntas:

1. Porque cambio tanto la sintáxis de AS?, osea para mi poco conocimiento del digo que en vez de ser mas fácil su sintáxis se volvio mas compleja o enredada para casi todo (es mi opinión desde el punto de vista personal, ahora asumo que tendrá sus razónes, pero no se cuales).

2. Mira yo programaba los botónes así:

boton_btn.OnRelease=function() {

gotoAndPlay(5)

}

Para este caso la sintáxis que me das es el remplazo o como sería para programar borónes básicos.

Nuevamente muchas gracias por tu tiempo y ayuda
__________________
Diseñador Gráfico publicitario
  #4 (permalink)  
Antiguo 02/06/2010, 10:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola ceaped
bueno, pues que óptimo que te haya servido mi rauda investigación.

Resuelvo las preguntas


1. Porque cambio tanto la sintáxis de AS?
Bueno, digamos que al principio cuando vendes un producto,
haces una versión que sea "amigable" pero luego, cuando quieres
mejorar tu producto, tienes que cambiar la funcionalidad del mismo
a veces sacrificando dicha "maternidad" con quienes lo usaban

así veo yo el cambio de as2 al as3

porque?? bueno, pues porque por ej en as2 tranquilamente te puedes
parar sobre un botón e insertarle código directamente en el.
En as2 se puede agregarle código a dicho boton ya sea en un layer
aparte o incluso en archivos .as aparte sencillos o que sean clases.

eso (de insertar código en el botón mismo) era bastante "refrescante"
para ponerle allí mismo eventos, PERO imaginate un punto en el que tengas
muchos botones que por ejemplo usen la misma funcionalidad en un evento
especifico, es mucho mejor tener una función recursiva para los mismos, y esto es bastante engorroso en as2 si usas la funcionalidad de código dentro de cada botón, ahora multiplica eso por n movieclips etc, y luego que quieras darle mantenimiento a tu código, pierdes de segundo en segundo que das clic en cada objeto y entras al código, y sales al siguiente y etcerera... entonces pues por la parte de sostenibilidad de codigo, me parece bien que hayan hecho eso, claro, eso fue un golpazo durisimo a quienes venian de as2 (y que incluso esa es una de las razones que aún se usa as2, pues no tienen el conocimiento de los listeners, pero si ves, no es tan complicado! o bueno, a mi me lo parece) pues no estan acostumbrados a añadir listeners a los botones (cosa que se puede hacer en as2, pero pues vamos al tema de la facilidad) y bueno da pa más carreta pero no quiero poner un blog sobre este post...

2. Mira yo programaba los botónes así:

boton_btn.OnRelease=function() {

gotoAndPlay(5)

}
Esta sintaxis no esta tan mal, ya que no la usas sobre el botón directamente,
sino en un layer y frame imagino

como te digo, puedes usar el addEventListener en as2 y funciona bien, y pues no se si acostumbres a tener tu código en archivos .as externos o lo manejes todo en el fla, que de hecho, pues vamos al tema de mantenimiento de código, me parece mucho mejor tenerlo en archivos .as externos, pues si tienes varios proyectos, puedes crear clases (que estaran en .as) y luego solo tienes en cada fla crear movieclips y exportarlos para actionscript dandoles el nombre de la clase en el momento de la exportación, y listo! tienes disponible el código que ya escribiste una vez en distintos proyectos.

Cita:
"Para este caso la sintáxis que me das es el remplazo o como sería para programar borónes básicos."
La sintaxis que te dí es un buen modo de reemplazarlo, aunque si no
estoy mal también puedes hacerlo con la sintaxis que posteaste

Bueno, espero haberte aclarado un poco más el asunto
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 02/06/2010, 14:07
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola nuevamente mortiprogramador.
Excelente tus comentarios y aportes.

Lo que explicabas de hacer el código .as en un archivo aparte lo he visto pero no se como implementarlo y me gustaría saber como hacerlo pues como tu dices es muy complicado actualizar botón por botón su código y demás mc que se tenga en la película.

Mira yo estoy trabajando un archivo con muchos botónes son 50 botónes y sería de mucha utilidad hacerlo como tu dices, en un archivo los botónes y en otro el .as.

Me puedes indicar como hago en mi caso?

1. Como invoco el código .as en el archivo que tiene los botónes?
2. Para controlar los botónes se les daría nombre de instrancia (a los 50 botónes) y en el código se controlarían con .as cada botón?

Nuevamente gracias por tu importante ayuda.
__________________
Diseñador Gráfico publicitario
  #6 (permalink)  
Antiguo 02/06/2010, 19:12
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola

pues agradezco los comentarios, pero pues es por usuarios como vos que en realidad tienen las ganas de mejorar como programador que (en mi caso) se explaya uno en los temas discutidos

Bueno, hay muchas maneras de implementarlo y de hecho al empezar a escribir un documento explicativo me estoy explayando demasiado, pues explico muchas cosas, tantas que en serio convertiria este post en un super blog, por eso mismo me permito autocercenar mi escritor interno (pero juro que volverá, uno de mis tantos proyectos en el tintero es escribir artículos sobre programación, cosa que aún no he hecho) aunque demonios, termine de escribir esto y me he desbocado....

Así pues, en resumidas cuentas haremos estos experimento

Experimento1
Ingredientes obligatorios:
1 test.fla
1 test.as
(archivos al mismo nivel o carpeta, aunque es mejor manejarlo en carpetas aparte)
1 textbox (Tener en cuenta height y width para visualizar textos)
4 botones visualmente hablando (pues en la biblioteca solo sera 1)

Pasos
0. Se abre el .fla y se agregan los ingredientes faltantes al stage
1. Damos el sacramento del bautismo a estos hijos de su madre, así:

textbox->txt_0, txt_1 (los txt NO los hemos convertido en simbolos, simplemente los dibujamos con la herramienta text)
buttons->btn_0, btn_1, btn_2, btn_3 (los botones NO los hemos convertido en simbolos, vienen tal cual de la librería de componentes)

2. Llevar hacia un lado del escenario a txt_0 y btn_0,
y formar un hogar (seleccionando ambos elementos) que convertido en simbolo se llamara mc_0 de tipo MovieClip


Hasta aquí tenemos lo necesario para empezar el tortuoso camino de la vida o linea de tiempo
para este swf

Nos ubicamos entonces en el Layer1, Frame1 (para este experimento unico layer y frame)
y vamos al panel de acciones, e insertamos este código:

Código actionscript:
Ver original
  1. include "test.as"

Ahora necesitamos darle el poder al .as, por lo que creamos
un nuevo archivo llamado test.as y dentro va este código
(esto sería igual que tenerlo en layer1 frame1 del fla
Código actionscript:
Ver original
  1. //Seteo de objetos
  2. // txt_0.text = "HOLA"; //false, porque? porque esta DENTRO de mc_0
  3. mc_0.txt_0.text = "txt MC"; //true
  4. txt_1.text = "txt 1";
  5. mc_0.btn_0.label = "btn MC";
  6. btn_1.label = "Boton 1";
  7. btn_2.label = "Boton 2";
  8. btn_3.label = "Boton 3";
  9.  
  10. //Agregar listeners a botones
  11. mc_0.btn_0.addEventListener(MouseEvent.CLICK, cualdetodos);
  12. btn_1.addEventListener(MouseEvent.CLICK, cualdetodos);
  13. btn_2.addEventListener(MouseEvent.CLICK, cualdetodos);
  14. btn_3.addEventListener(MouseEvent.CLICK, cualdetodos);
  15.  
  16.         function cualdetodos(e:MouseEvent):void
  17.     {
  18.         //e nos traera información interesante sobre el botón presionado, por ej
  19.         //se puede usar también target, pero este suele devolver el destinatario y no el remitente
  20.         //ej: target txt_0 currentTarget btn_0
  21.         trace(e.currentTarget.label);
  22.         if(e.currentTarget.label == 'btn MC')
  23.         {
  24.             mc_0.txt_0.text = "Somos parientes";
  25.         }
  26.         else
  27.         {
  28.             txt_1.text = "Hoy soy pariente de " + (e.currentTarget.label);
  29.         }
  30.     }

Siguiendo estos pasos, deberíamos ver interacción entre botones y textos dinámicos
Ahora bien, si ven el código no hay variables de ningún tipo, entonces si escribieran el código
por ej : btn_1. no verían la "ayuda" que da flash para propiedades y métodos del botón, porque es esto??
porque no se han creado variables de los tipos necesarios, entonces por ej
para el btn_1 podriamos crear una variable de este modo

Código actionscript:
Ver original
  1. var btn_1:Button;

y con esto deberiamos ver la ayuda

Experimento2
Es el mismo 1, con dos diferencias

0. agregaremos esto en el archivo .as
(notese que aquí necesitamos hacer imports!)
Código actionscript:
Ver original
  1. //si tuvieramos el .as en una carpeta source/test el package seria package source.test
  2. package{
  3.     import fl.controls.Label;
  4.     import fl.controls.Button;
  5.     import flash.display.MovieClip;
  6.     import flash.events.MouseEvent;
  7.     import flash.text.TextField;
  8.    
  9.     public class test extends MovieClip{
  10.        
  11.         function test():void
  12.         {
Dentro de esta función test (constructora) iria el código del seteo hasta los listeners, cerramos la función, y luego seguiria el código de la función cualdetodos, y finalmente cerramos la clase y el paquete, OJO con las llaves } !!

1. en el archivo fla ponemos el include en comentario, y nos vamos al escenario, damos click en el mismo para ver sus propiedades, y en la propiedad class escribimos test, y para probar que estan relacionadas, damos click en el lapiz, esto debe abrirnos el archivo .as

compilamos, y debe estar funcionando

Y bueno, finalmente!! por fin!!!
si usaramos varias clases
Por ej: la clase test que ya tenemos y ahora una clase test2 por ej para
el movieclip que creamos con txt_0 y btn_0

tendriamos que:

0. crear el archivo test2.as que podría tener lo siguiente:

Código actionscript:
Ver original
  1. package{
  2.     import fl.controls.Label;
  3.     import fl.controls.Button;
  4.     import flash.display.MovieClip;
  5.     import flash.events.MouseEvent;
  6.     import flash.text.TextField;
  7.    
  8.     public class test2extends MovieClip{
  9.        
  10.         function test2():void
  11.         {
  12.             //Seteo de objetos
  13.             // txt_0.text = "HOLA"; //false, porque? porque esta DENTRO de mc_0
  14.             txt_0.text = "txt2 sMC"; //true
  15.             btn_0.label = "btn2 MC";
  16.             //Agregar listeners a botones
  17.             btn_0.addEventListener(MouseEvent.CLICK, cualdetodos);
  18.         }
  19.        
  20.     function cualdetodos(e:MouseEvent):void
  21.     {
  22.         //e nos traera información interesante sobre el botón presionado, por ej
  23.         //se puede usar también target, pero este suele devolver el destinatario y no el remitente
  24.         //ej: target txt_0 currentTarget btn_0
  25.         trace(e.currentTarget.label);
  26.         if(e.currentTarget.label == 'btn2 MC')
  27.         {
  28.             txt_0.text = "nuevos parientes";
  29.         }
  30.     }
  31.     }
  32. }

1. Ir al fla, a la librería, buscamos el simbolo movieclip creado, click derecho->Propiedades
Seleccionamos la opción de exportar para actionscript, y en nombre de clase ponemos test2, para probar la relación, damos click en el botón con el "chulo" verde (test2.as debe estar al mismo nivel de test.as)
OK a todo
Listo, ya esta relacionado el movieclip con otra clase, compilamos y vemos que esta funcionando como antes, porque? pues porque no hemos quitado el código en test.as que trabaja con el movieclip, así que todo lo que sea mc_0 en test.as quitarlo, y volver a compilar, y debería funcionar todo (no puse removeEventListener que es para como se explica, quitarle el evento a un objeto, pero se usa igual que addEventListener)

Bueno, siempre fue largo el post después de todo, pero pues con esto me deben todos una birra pues si estuviera hablando, tendria la garganta reseca

prueben el código, y verán que aunque pueda parecer confuso en un
principio, ayuda bastante tenerlo de este modo

saludos

p.s: dejo lo siguiente:

0. link para descarga del ejemplo
1. compresor para descomprimirlo
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 02/06/2010 a las 19:18 Razón: add_files()
  #7 (permalink)  
Antiguo 03/06/2010, 05:51
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador.
El conocimiento se vuelve grande cuando uno lo comparte, pues es aquí donde las personas ven lo grande que somos y seviciales.

Tu ayuda ha sido de gran ayuda, nuevamente GRACIAS.
Voy a poner en practica tus GRANDES aporte y creo que te volveré a molestar...jejeje...pues estoy migrando un trabajo de Flash 8 con .as 2 a Flash CS4 con .as 3, pero creeme que con los que me has explicado puedo comenzar y avanzar más de lo que pensaba.

Nuevamente GRACIAS. Te deseo las mejores de las suertes
__________________
Diseñador Gráfico publicitario
  #8 (permalink)  
Antiguo 03/06/2010, 06:44
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador.

Tu lo hiciste con componente "Button", pero yo lo deseo hacer sin componentes, yo deseo diseñar mi propio botón y instanciarlo digamos 20 veces de la biblioteca, osea hacer tu mismo proceso pero sin componente.

Ya hice tu tutorial y no logro que me de con un botón normal.

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #9 (permalink)  
Antiguo 03/06/2010, 12:47
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola
Bueno, pues si yo también prefiero botones propios, y en ese caso
pues allí iba mi comentario del funcionamiento del movieclip,
de ese modo puedes hacer la implementación para tus componentes personalizados.

En cuanto a la prueba, pues habria que ver si tal vez algo
no quedo claro, te envio mensaje interno sobre el issue

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #10 (permalink)  
Antiguo 03/06/2010, 14:02
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador.
Si deseas te paso por correo lo que hice.
Dame un correo a donde te pueda pasar el .fla
Gracias
__________________
Diseñador Gráfico publicitario
  #11 (permalink)  
Antiguo 03/06/2010, 19:45
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola
Bueno, pues envialo a [email protected]
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 10/08/2010 a las 00:07
  #12 (permalink)  
Antiguo 04/06/2010, 07:01
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador.
Ahí te pase los archivos.
Gracias
__________________
Diseñador Gráfico publicitario
  #13 (permalink)  
Antiguo 04/06/2010, 07:53
Avatar de buhomorado  
Fecha de Ingreso: enero-2005
Mensajes: 324
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Realizar Multimedia en AS3

Muy Buenas Clases de las Clases Morti, reviso más tarde que puedo aprender!
Saludos Ceaped, Alias: Cabeza de batería.
  #14 (permalink)  
Antiguo 04/06/2010, 13:08
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola

Hey buhomorado! de nuevo nos encontramos! jajaja bueno pues hay que tener algo de clase, y más cuando de actionscript o php se trata!! jajaja, bueno, pues ahi tienes otra entrega!!

ceaped, archivos recibidos, revisando

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #15 (permalink)  
Antiguo 04/06/2010, 13:48
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Cita:
Iniciado por ceaped Ver Mensaje
Hola mortiprogramador.

Tu lo hiciste con componente "Button", pero yo lo deseo hacer sin componentes, yo deseo diseñar mi propio botón y instanciarlo digamos 20 veces de la biblioteca, osea hacer tu mismo proceso pero sin componente.

Ya hice tu tutorial y no logro que me de con un botón normal.

Gracias por tu ayuda
Hola
Bueno, pues disculpa, no te había entendido bien

En efecto, mi ejemplo va con botones de la librería, para que funcione
con botones propios (y en tu caso que son instancias de una clase (boton_0))
entonces basta con lo siguiente:

archivo test.fla
0. Entrar a mc_0, luego entrar a btn_0 y agregar un campo text sobre el botón (que simulara el label del boton común) y le damos de nombre de instancia label
Listo, al hacer esto, los demás botones heredaran de esta su madre!

Hasta aquí todo ok, si compilamos en este momento
nos dira que estamos entrando a una propiedad label que no puede ser
accedida, porque? pues porque en este momento tu hiciste movieclips
personalizados, y le diste que sean de tipo Button, pero pues no tienes
la propiedad label, solución? ponlos de tipo movieclip ( a todos los btn_n, pues este proceso no lo heredan cuando cambias el tipo en el panel de propiedades)

Ahora necesitamos modificar un poco el archivo as, poniendole .text a todos los labels que agregamos a cada botón y agregando algo que comento al final

archivo test.as
Código actionscript:
Ver original
  1. //Seteo de objetos
  2. // txt_0.text = "HOLA"; //false, porque? porque esta DENTRO de mc_0
  3. mc_0.txt_0.text="txt MC";//true
  4. txt_1.text="txt 1";
  5. mc_0.btn_0.label.text="btn MC";
  6. btn_1.label.text="Boton 1";
  7. btn_2.label.text="Boton 2";
  8. btn_3.label.text="Boton 3";
  9. mc_0.btn_0.buttonMode = true;
  10. mc_0.btn_0.mouseChildren = false;
  11. //Agregar listeners a botones
  12. mc_0.btn_0.addEventListener(MouseEvent.CLICK, cualdetodos);
  13. btn_1.addEventListener(MouseEvent.CLICK, cualdetodos);
  14. btn_2.addEventListener(MouseEvent.CLICK, cualdetodos);
  15. btn_3.addEventListener(MouseEvent.CLICK, cualdetodos);
  16.  
  17. function cualdetodos(e:MouseEvent):void {
  18.     //e nos traera información interesante sobre el botón presionado, por ej
  19.     //se puede usar también target, pero este suele devolver el destinatario y no el remitente
  20.     //ej: target txt_0 currentTarget btn_0
  21.     trace(e.currentTarget.label);
  22.     if (e.currentTarget.label.text=='btn MC') {
  23.         mc_0.txt_0.text="Somos parientes";
  24.     } else {
  25.         txt_1.text = "Hoy soy pariente de " + (e.currentTarget.label.text);
  26.     }
  27. }

Notese estas 2 líneas
Código actionscript:
Ver original
  1. mc_0.btn_0.buttonMode = true;
  2. mc_0.btn_0.mouseChildren = false;
que hace esto? (especificamente solo con el botón del mc_0 para que se note que no esta habilitado en los otros botones)
la primera propiedad hace que salga el "indice acusador con la mano correspondiente" sobre el movieclip donde estamos ubicados
la segunda hace que los objetos que sean hijos del movieclip
también hereden al indice acusador
si pusieran esto
Código actionscript:
Ver original
  1. mc_0.btn_0.buttonMode = true;
  2. mc_0.btn_0.mouseChildren = true;
el indice acusador solo saldria por partes del botón donde
no lo este cubriendo el campo de texto

Pruebas y debe funcionar
Te envío los archivos sin embargo a tu mail
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 10/06/2010 a las 00:22 Razón: edit_comment()
  #16 (permalink)  
Antiguo 09/06/2010, 07:35
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador
Como no hay felicidad completa...jajaja...me tope con otro problema pues tengo un código en .as2 y cuando lo pruebo en .as3 no funciona y me salen una serie de errores. Te posteo el código y la serie de errores que me salen:

Cita:
///////////////ZOOM de mapa///////////////////
// s --> smalll --> larged --> drag
// w --> widthh --> height
var sw = 395;
var sh = 380;
var dw = 25;
var dh = 20;
var lw = 400;
var lh = 320;
var porcentaje_zoom = 25;
MovieClip.prototype.move = function(drag_mc) {
this.onEnterFrame = function() {
with (_root) {
this._x = -drag_mc._x*100/porcentaje_zoom;
this._y = -drag_mc._y*100/porcentaje_zoom;
}
};
};
with (clip1_mc) {
drag_mc.onPress = function() {
with (_root) {
this.startDrag(false, 0, 0, sw-dw, sh-dh);
clip1_mc.clip2_mc.move(this);
}
};
drag_mc.onRelease = drag_mc.onReleaseOutside=function () {
this.stopDrag();
delete _root.clip1_mc.clip2_mc.onEnterFrame;
};
}
y estos son los errores:

Cita:
1120: Acceso a una propiedad _root no definida.delete

1120: Acceso a una propiedad _root no definida.

delete _root.clip1_mc.clip2_mc.onEnterFrame;

Warning: 1058: Problema de migración: la propiedad _root ya no se admite. Se ha quitado esta propiedad. El equivalente más próximo es Stage, que funciona como raíz de la lista de visualización de ActionScript 3.0..
Cita:
Hice lo que decia ahí, cambie "_root" donde estaba por "Stage" y no funciona
Si sabes como corregir este código te estaré muy agradecido.

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #17 (permalink)  
Antiguo 10/06/2010, 01:06
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola ceaped

Bueno, pues "imagino" que ese código esta ejecutandose
en el stage (escenario) en cuyo caso yo cambiaría stage por this

Con esto se van los errores, y ahora pruebas y no funciona
es tiempo entonces de reflexionar sobre porque no hace lo que
debe hacer!!! y entonces volvemos a reflexionar que el código
esta en As2 pero estamos probandolo en As3, producto de este
sencillo ejercicio de comparación de versiones, observamos que
el onPress es válido para as2, pero en as3 sería más adecuado
hacer uso de MouseEvent.CLICK (pero para un drag sería mucho más
adecuado un MouseEvent.MOUSE_DOWN), y por supuesto, un complementario
listener que enlace el evento con el objeto y la función a ejecutar,
startDrag en as3 recibe un rectángulo en vez de las coordenadas como
se hacía en as2,
Y asi sucesivamente, es una reacción en cadena, que tiene
su irreversible final en este código

Código actionscript:
Ver original
  1. ///////////////ZOOM de mapa///////////////////
  2. // s --> smalll --> larged --> drag
  3. // w --> widthh --> height
  4. var sw = 395;
  5. var sh = 380;
  6. var dw = 25;
  7. var dh = 20;
  8. var lw = 400;
  9. var lh = 320;
  10. var porcentaje_zoom = 25;
  11.  
  12. MovieClip.prototype.move = function(drag_mc)
  13. {
  14.     this.addEventListener(Event.ENTER_FRAME, entraframe);
  15.     function entraframe(e:Event)
  16.     {
  17.         with (stage)
  18.         {
  19.             this._x = -drag_mc._x*100/porcentaje_zoom;
  20.             this._y = -drag_mc._y*100/porcentaje_zoom;
  21.         }
  22.     };
  23. };
  24.  
  25. with (clip1_mc)
  26. {
  27.     drag_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
  28.     drag_mc.addEventListener(MouseEvent.MOUSE_UP, drop);
  29.     function drag(e:MouseEvent)
  30.     {
  31.         with (this)
  32.         {
  33.         var rect:Rectangle = new Rectangle(0,0,30,10);
  34.         rect.left = 0;
  35.         rect.top = 0;
  36.         rect.right = sw-dw;
  37.         rect.bottom = sh - dh;
  38.         //drag_mc.startDrag(false, 0, 0, sw-dw, sh-dh);
  39.         this.startDrag(false,rect);
  40.         clip1_mc.clip2_mc.move(this);
  41.         }
  42.     };
  43.  
  44.     function drop(e:MouseEvent)
  45.     {
  46.         this.stopDrag();
  47.         delete this.clip1_mc.clip2_mc.onEnterFrame;
  48.     };
  49. }

y pues pruebo y funciona

esta fue una entrega más de "migrando de as2 to as3..." jajaja, espero
te funcione ceaped
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #18 (permalink)  
Antiguo 10/06/2010, 05:42
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador
SÓLO tengo palabras de AGRADECIMIENTO.
Una gran admiración por tu sincera y oportuna ayuda.

De nuevo muchas gracias.
__________________
Diseñador Gráfico publicitario
  #19 (permalink)  
Antiguo 16/06/2010, 08:00
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola morti
Tengo un problema con este código pues te puse algo mal y por tal motivo tiene un comportamiento no correcto.

Sí me puedes ayudar te estaré muy agradecido pues he intentado y no logro hacerlo.

Te posteo de nuevo el código y te indico en donde esta el cambio y cual es el comportamiento de ello:

Cita:

///////////////ZOOM de mapa///////////////////
// s --> smalll --> larged --> drag
// w --> widthh --> height
var sw = 395;
var sh = 380;
var dw = 25;
var dh = 20;
var lw = 400;
var lh = 320;
var porcentaje_zoom = 25;
MovieClip.prototype.move = function(drag_mc) {
this.onEnterFrame = function() {
with (_root) {
this._x = -drag_mc._x*100/porcentaje_zoom;
this._y = -drag_mc._y*100/porcentaje_zoom;
}
};
};
with (clipmover_mc) {
drag_mc.onPress = function() {
with (_root) {
this.startDrag(false, 0, 0, sw-dw, sh-dh);
clip1_mc.clip2_mc.move(this);
}
};
drag_mc.onRelease = drag_mc.onReleaseOutside=function () {
this.stopDrag();
delete _root.clip1_mc.clip2_mc.onEnterFrame;
};
}
Explicación:

Tengo 2 fotos una grande y una pequeña.

Dentro de la foto pequeña esta drag_mc.

Cuando muevo drag_mc hace un movimiento sobre clipmover_mc, moviendose sólo la foto grande.

No logro hacer que se mueva así, se mueve todos los clips.

Disculpa tanta preguntadera pero no logro hacer que me funcione bien.

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #20 (permalink)  
Antiguo 17/06/2010, 01:27
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

hola
bueno, no me queda claro que quieres lograr finalmente,
pero pues veo que estas de nuevo en as2, hice pruebas
y lo que pasa en mi test es que se "sustrae" el clip2_mc de
donde esta (clip1_mc) y empieza a danzar sobre el escenario
dependiendo de la posición de drag_mc, pero no se mueven
los demás clips (clipmover_mc y clip1_mc) como según entiendo
que te esta ocurriendo
nos comentas entonces
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #21 (permalink)  
Antiguo 17/06/2010, 06:31
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola mortiprogramador
Gracias por responder.
Mira yo hice un ejercicio en el que te muestro que es exactamente.
Te lo paso al correo.
__________________
Diseñador Gráfico publicitario
  #22 (permalink)  
Antiguo 20/06/2010, 21:20
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Realizar Multimedia en AS3

Hola again
Bueno, pues he estado modificando el código para que funcione en as3 y aquí esta lo que tengo hasta ahora

Código actionscript:
Ver original
  1. import flash.display.MovieClip;
  2. import flash.display.SimpleButton;
  3. import flash.filters.GlowFilter;
  4. import flash.geom.ColorTransform;
  5. import flash.events.Event;
  6. import flash.events.MouseEvent;
  7. import flash.geom.Rectangle;
  8. ///////////////ZOOM de mapa///////////////////
  9. // s --> smalll --> larged --> drag
  10. // w --> widthh --> height
  11. var sw:Number = 215;
  12. var sh:Number = 155;
  13. var dw:Number = 25;
  14. var dh:Number = 20;
  15. var lw:Number = 400;
  16. var lh:Number = 320;
  17. var porcentaje_zoom:Number = 25;
  18.  
  19. this.addEventListener(Event.ENTER_FRAME, test);
  20.  
  21. function test(e:Event):void{
  22.  
  23. MovieClip.prototype.move = function(drag_mc) {
  24.     this.onEnterFrame = function() {
  25.         with (stage) {
  26.             this.x = -pequeno_mc.drag_mc.x*100/porcentaje_zoom;
  27.             this.y = -pequeno_mc.drag_mc.y*100/porcentaje_zoom;
  28.         }
  29.     };
  30. };
  31. }
  32. grande_mc.btn_3.addEventListener(MouseEvent.CLICK, filtros);
  33. grande_mc.btn_4.addEventListener(MouseEvent.CLICK, filtros);
  34. pequeno_mc.drag_mc.buttonMode = true;
  35. pequeno_mc.drag_mc.addEventListener(MouseEvent.MOUSE_DOWN, startDr);
  36. pequeno_mc.drag_mc.addEventListener(MouseEvent.MOUSE_UP, stopDr);
  37. pequeno_mc.pequeno2_mc.btn_1.addEventListener(MouseEvent.CLICK, filtros);
  38. pequeno_mc.pequeno2_mc.btn_2.addEventListener(MouseEvent.CLICK, filtros);
  39.  
  40. function startDr(e:MouseEvent):void
  41. {    
  42.     this.startDrag(false, new Rectangle(0, 0, sw-dw, sh-dh));
  43.     this.grande_mc.grande2_mc.move(this);
  44. }
  45.  
  46. function stopDr(e:MouseEvent):void
  47. {
  48.     this.stopDrag();
  49.     delete this.grande_mc.grande2_mc.onEnterFrame;
  50. }
  51.  
  52. function filtros(e:MouseEvent):void
  53. {
  54.     //Poner un filtro al botón
  55.     import flash.filters.*;
  56.     //----------------------------------
  57.     // color de la sombra
  58.     var alpha:Number = 0.9;
  59.     //ALPHA pero valor maximo 1
  60.     var blurX:Number = 16;
  61.     //blur del eje X maximo 255
  62.     var blurY:Number = 16;
  63.     //igual q blurX
  64.     var fuerza:Number = 1;
  65.     //la fuerza de impresion de la sombra MAX 255
  66.     var calidad:Number = 3;
  67.     //arrays
  68.     var array1:Array = new Array();
  69.     var array2:Array = new Array();
  70.     //filter
  71.     var p:GlowFilter;
  72.     //mc
  73.     var bt:SimpleButton;
  74.     var mc:MovieClip;
  75.     if ( e.target.name == "btn_3" )
  76.     {
  77.         p = new GlowFilter(0x666666, 1, 10, 10, 1.5, 100);
  78.         bt = grande_mc.btn_3;
  79.         //Elimina el filtro del anteriror botón
  80.         grande_mc.btn_4.filters = array2;        
  81.     }
  82.     else if( e.target.name == "btn_4" )
  83.     {
  84.         p = new GlowFilter(0x666666, 1, 10, 10, 1.5, 100);    
  85.         bt = grande_mc.btn_4;
  86.         //Elimina el filtro del anteriror botón
  87.         grande_mc.btn_3.filters = array2;
  88.     }
  89.     else if( e.target.name == "btn_1" )
  90.     {
  91.         p = new GlowFilter(0xFF0000, 1, 10, 10, 1.5, 100);    
  92.         mc = grande_mc.color1_mc;
  93.         //Elimina el filtro del anteriror botón
  94.         grande_mc.color2_mc.filters = array2;
  95.     }    
  96.     else if( e.target.name == "btn_2" )
  97.     {
  98.         p = new GlowFilter(0xFF0000, 1, 10, 10, 1.5, 100);    
  99.         mc = grande_mc.color2_mc;
  100.         //Elimina el filtro del anteriror botón
  101.         grande_mc.color1_mc.filters = array2;        
  102.     }    
  103.     //agregar filtros    
  104.     array1.push(p);        
  105.     if (mc)
  106.     {
  107.         mc.filters = array1;
  108.     }
  109.     else
  110.     {
  111.         bt.filters = array1;
  112.     }
  113.        
  114. }

Con esto ya sirven los botones, y el drag lo hace pero no termino de entender bien aún como funciona eso de prototype

si pudieras contarnos más respecto a esa sección del código o tal vez alguien que lo haya manejado más tal vez nos comente sobre esto

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #23 (permalink)  
Antiguo 18/07/2010, 12:18
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola morti
Yo estoy utilizando para generar varios botones un for así

Cita:
or (var i:Number = 1; i<=5; i++) {
//this["boton"+i].num = i;
this["boton"+i].onRelease = function() {

this[0]=gotoAndStop(2);
//
this[1]=gotoAndStop(3);
};
}
Lo que deseo es que me navegue a varios fotogramas así:

Cita:
this[0]=gotoAndStop(2);

this[1]=gotoAndStop(3);

this[2]=gotoAndStop(4);

this[3]=gotoAndStop(5);
Pero no logro que me navegue, sólo lo hace a uno solo.

Como se hace?

Gracias por su ayuda
__________________
Diseñador Gráfico publicitario
  #24 (permalink)  
Antiguo 19/07/2010, 08:44
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Realizar Multimedia en AS3

Hola a todos.
Queria compartir la solución a mi problema por si aguien tiene la misma duda.

para que puedas navegar por todos los botones sería así:

Cita:
for (var i:uint = 1; i <= 5; i++) {
this["tuBoton"+i].addEventListener(MouseEvent.CLICK,clicBoton);
}

function clicBoton(e:MouseEvent):void {

var nombre:String=e.currentTarget.name;
var num:uint=uint(nombre.replace("tuBoton",""));

gotoAndStop(num + 1);

}
Así no tenemos a poner por cada fotograma "this[0]=gotoAndStop(2);" pues "num + 1" nos hace la sumatorio y nos lleva a los fotogramas

Espero le sea útil a alguien
__________________
Diseñador Gráfico publicitario

Etiquetas: multimedia, realizar
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 19:53.