Comunidad de diseño web y desarrollo en internet online

abrir mc cerrando el que está abierto

Citar            
MensajeEscrito el 11 Sep 2008 09:38 am
Hola a todos, en primer lugar muchas gracias a todos los que realizais esta web...sirve mucho de ayuda.

Tengo un problema para una web , completa en flash, quiero abrir dentro de mi flash una ventana (clip de pelicula) desde un boton, pero que a la vez quiero que se cierre el clip de pelicula que este abierto en ese momento mediante un efecto.
Ejemplo.
tengo tres botones(1,2,3), cada uno llama a una ventana que de acerca del fondo y que al cerrarse de aleja(recorrido inverso).Si tengo una ventana abierta , pincho en otro boton y quiero qyue la que esta se cierre alejandose y que a la vez la ventana nueva se acerque.

Que el boton 1 cierre el 2 o 3(segun el que este abierto en ese momento)
Que el boton 2 cierre el 1 o 3(segun el que este abierto en ese momento)
Que el boton 3 cierre el 1 o 2(segun el que este abierto en ese momento)

Creo que se entiende. He estado buscando en tutoriales, pero no encuentro la forma de hacerlo.

Alguien me ayuda...

Muchas gracias

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 11 Sep 2008 09:59 am
No tienes nada hecho hasta ahora.?
Con qué Tween deseas animar las ventanas?
Dominas Caurina, TweenMax o TweenLite?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Sep 2008 10:17 am
de momento no tengo nada hecho. Y no domino nada de eso. Pretendo hacerlo en flash cs3.

entiendes lo que quieres hacer no?

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 11 Sep 2008 11:11 am
Si entiendo, vamos por paso, descárgate el paquete de clases TweenMax

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Sep 2008 11:33 am
Ok, ya lo tengo descargado..TweenMax que consiste en generar codigos actionScript?
...

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 11 Sep 2008 12:19 pm
TweenMax es una librería que al igual que la clase Tween de Adobe te permite crear animaciones pero con un código más sencillo, limpio y un rendimiento extremadamente superior.

Pon la carpeta "gs" donde mismo está tu flash, estas clases solo se utilizan para compilar el SWF. Después en el primer frame de tu película pones:

Código ActionScript :

import gs.TweenMax;
import gs.easing.*;


Ahora lo próximo, las ventanas que quieres abrir deben ser movieClips, los debes tener en tu biblioteca linkeado para Action Script. Debes ir a la biblioteca darle click derecho al MovieClip, escoger linkage..., después marcas Export for ActionScript y dejas marcado Export in first frame, y le pones un nombre en Identifier, trata de que el nombre no contenga espacios ni caracteres especiales.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Sep 2008 02:36 pm
Perfecto, de momento todo bien, y sencillo, espero que no se complique mucho :p

Gracias de antemano elchininet...ME SALVAS LA VIDA...jejejeje

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 11 Sep 2008 03:10 pm
Ahora debes crear en un arreglo los nombres del linkage de los clips en la biblioteca, por ejemplo si los movies están linkeados como "ventana1", "ventana2", "ventana3", etc... Debes hacer un arreglo como este:

Código ActionScript :

var windows:Array = new Array("ventana1", "ventana2", "ventana3", etc...);


A su vez el nombre de instancia de los botones que abren las ventanas debe ser "boton1", "boton2", "boton3", etc... El "boton1" abre la "ventana1", el 2 la 2 y así sucesivamente...

Cuando lo tengas listo vamos a la función para abrir o cerrar la ventana.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Sep 2008 03:17 pm
a que te refieres con arreglo? :s

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 11 Sep 2008 03:37 pm
Arreglo en español, en ingles Array. Te puse un ejemplo, es un objeto que contiene dentro muchas variables. Si el arreglo es:

Código ActionScript :

var windows:Array = new Array("ventana1", "ventana2", "ventana3");

windows[0] //Se refiere a ventana1
windows[1] //Se refiere a ventana2
windows[2] //Se refiere a ventana3

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Sep 2008 03:41 pm
ok, eso lo coloco en el primer fotograma , a continuacion de

import gs.TweenMax;
import gs.easing.*;

no?, que havcemos a continuacion?

Pd. te dejado un mensaje privado

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 11 Sep 2008 04:28 pm
Ya lo tengo listo como me comentas, el Arreglo, y los nombres de instancia de los botones.

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 11 Sep 2008 06:10 pm
No reviso mucho los mensajes privados, es mejor trabajar desde aquí desde el foro, así otras personas con el mismo problema se nutren de lo que se va haciendo.

Lo que debes situar despues de los imports es esto:

elchininet escribió:

Ahora debes crear en un arreglo los nombres del linkage de los clips en la biblioteca, por ejemplo si los movies están linkeados como "ventana1", "ventana2", "ventana3", etc... Debes hacer un arreglo como este:

Código ActionScript :

var windows:Array = new Array("ventana1", "ventana2", "ventana3", etc...);


A su vez el nombre de instancia de los botones que abren las ventanas debe ser "boton1", "boton2", "boton3", etc... El "boton1" abre la "ventana1", el 2 la 2 y así sucesivamente...

Cuando lo tengas listo vamos a la función para abrir y cerrar la ventana.


Ya lo que queda es hacer una función que abra y cierre las ventanas sin animarlas todavía.

Código ActionScript :

import gs.TweenMax; 
import gs.easing.*;

//---Cantidad de botones
var cantidad:Number = 3;

//---Arreglo de ventanas
var windows:Array = new Array("ventana1", "ventana2", "ventana3");

//---Ventana abierta
var windowOpen:Number;

//---Acciones de los botones
for(var i:Number = 1; i <= cantidad; i++){
   
   this["boton" + i].numero = i;
   
   //---OnPress de los botones
   this["boton" + i].onPress = function():Void{
      
      //---Si existe una ventana abierta cerrarla
      if(windowOpen > 0){
         
         this._parent[windows[windowOpen - 1]].removeMovieClip();
         
      }
      
      var win:MovieClip = this._parent.attachMovie(windows[this.numero - 1], windows[this.numero - 1], this._parent.getNextHighestDepth());
      win._x = (Stage.width - win._width) / 2;
      win._y = (Stage.height - win._height) / 2;
      
      //---Declarar la ventana que se abierto
      windowOpen = this.numero;
      
   }
   
}


Intenta esto, cuando tengas las ventanas que se abren y se cierran al presionar los botones, entonces las animamos.
Fíjate en los comentarios que he puesto para que aprendas para que es cada código, no lo copies y pegues solamente sino no aprendes.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Sep 2008 07:48 pm
hola
perdon que me meta...lo que qures hacer es algo asi
anda un poco lento xq no le puse loading......pero si qures te mando el fla....asi lo miras.....digo para que no se complique
tanto :) xq esta ehcho de manera facil

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 12 Sep 2008 06:24 am
mmm porque no intentas esto: es un método algo primitivo pero a mi me funciona.

Tienes tus 5 movieclips y 5 botones, en cada movieclip crea etiquetas "iniciar" y "cerrado", agrega un stop al final de la animacion que este dentro de los parametros de "iniciar" y un stop despues de cerrado...



Ahora el código al primer botón.

Código :

on(release){
   movieclip1.gotoAndPlay("iniciar");
   movieclip2.gotoAndPlay("cerrado");
   movieclip3.gotoAndPlay("cerrado");
   movieclip4.gotoAndPlay("cerrado");
   movieclip5.gotoAndPlay("cerrado");
}


al segundo boton

Código :

on(release){
   movieclip2.gotoAndPlay("iniciar");
   movieclip1.gotoAndPlay("cerrado");
   movieclip3.gotoAndPlay("cerrado");
   movieclip4.gotoAndPlay("cerrado");
   movieclip5.gotoAndPlay("cerrado");
}


y asi sucesivamente, donde "iniciar" es donde inicias la animacion y "cerrado" es donde no hay animacion ó puedes poner una animacion simulando que se cierra y al final el stop y que ya no exista frames con animacion.

Tambien puedes intentar con la funcion _visible

Código :

on(release){
   movieclip1._visible=true;
   movieclip2._visible=false;
   movieclip3._visible=false;
   movieclip4._visible=false;
   movieclip5._visible=false;
}


Métodos primitivos pero te sacan del problema :P xD

Por Konfleis

BOFH

1176 de clabLevel

1 tutorial
2 articulos

Genero:Masculino   Bastard Operators From Hell Desarrollador de GAIA

Desde la CerealBox

firefox
Citar            
MensajeEscrito el 12 Sep 2008 07:33 am
Hola, Os comento uno a uno, ironeric23 muchas gracias por ofrecerte, pero no es el caso este.
DJ Konflëis, Probaré tu metodo si el que estoy haciendo con elchininet me da muchos problemas, xq veo interesante la opción de elchininet, y creo que puedo aprender muchisimo con él...de todas formas muchisimas gracias.

elchininet, probaré todo lo que me dices a ver si me funciona y ya te comento...Muchas gracias

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 12 Sep 2008 07:40 am
elchininet, me funciona perfectamente, me abré cada boton su ventana correspondiente, pero como podemos hafcer para que cuando pinchemos en el boton 1 cierre la ventana 2 o la 3(segun el que este abierto en ese momento), pero mediante una animación. Que el boton 2 cierre la ventana 1 o la 2(segun el que este abierto en ese momento), pero mediante una animación....etc etc.

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 12 Sep 2008 10:57 am
Te entendí desde el principio lo que deseabas hacer, lo que hace el script es cerrar la ventana que esté abierta:

Cada vez que se presiona un botón se declara un número de ventana que se ha abierto:

Código ActionScript :

//---Declarar la ventana que se abierto 
windowOpen = this.numero; 


Y después antes de abrir la ventana respectiva al botón, se cierra la anterior:

Código ActionScript :

//---Si existe una ventana abierta cerrarla 
if(windowOpen > 0){ 
          
   this._parent[windows[windowOpen - 1]].removeMovieClip(); 
          
} 


Solo queda que estas se abran y cierren por medio de animaciones, para eso debes saber algunas cosas de TweenMax:

Código ActionScript :

//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo
TweenMax.to(objeto, .5, {_x:200});

//---Animará el objeto desde 200 en las "x"
//---hasta la posición actual en medio segundo
TweenMax.from(objeto, .5, {_x:200});

//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo, pero esperando un tiempo
//---de 1 segundo
TweenMax.to(objeto, .5, {_x:200, delay:1});

//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo, y ejecutará la función
//---"finishAnimation" cuando termine
TweenMax.to(objeto, .5, {_x:200, onComplete:finishAnimation});

//---Animará el objeto desde la posición actual en las "x"
//---hasta 200 en medio segundo, y ejecutará la función
//---"finishAnimation" cuando termine mandándole como
//---parámetro el número "1"
TweenMax.to(objeto, .5, {_x:200, onComplete:finishAnimation, onCompleteParams[1]});


Conociendo como funciona TweenMax podemos entonces llegar al resultado:

Código ActionScript :

import gs.TweenMax; 
import gs.easing.*;

//---Cantidad de botones
var cantidad:Number = 3;

//---Arreglo de ventanas
var windows:Array = new Array("ventana1", "ventana2", "ventana3");

//---Ventana abierta
var windowOpen:Number;

//---Acciones de los botones
for(var i:Number = 1; i <= cantidad; i++){
   
   this["boton" + i].numero = i;
   
   //---OnPress de los botones
   this["boton" + i].onPress = function():Void{
      
      //---Si existe una ventana abierta cerrarla
      if(windowOpen > 0){
         
         var winClose:MovieClip = this._parent[windows[windowOpen - 1]];
         
         //---Animar la ventana hacia el centro y escala 0
         TweenMax.to(winClose, .5, {_x:Stage.width / 2, _y:Stage.height / 2, _xscale:0, _yscale:0, ease:Cubic.easeOut, onComplete:deleteWindow, onCompleteParams:[winClose]});
         
      }
      
      //---Tiempo que se tiene que demorar en abrir la ventana
      var tiempo:Number = (windowOpen > 0) ? .5 : 0;
      
      var win:MovieClip = this._parent.attachMovie(windows[this.numero - 1], windows[this.numero - 1], this._parent.getNextHighestDepth());
      win._x = (Stage.width - win._width) / 2;
      win._y = (Stage.height - win._height) / 2;
      
      //---Animar la ventana desde el centro hasta la posición actual
      TweenMax.from(win, .5, {_x:Stage.width / 2, _y:Stage.height / 2, _xscale:0, _yscale:0, delay:tiempo, ease:Cubic.easeOut});
      
      //---Declarar la ventana que se abierto
      windowOpen = this.numero;
      
   }
   
}

//---Función de borrar el movieAbierto
function deleteWindow(window:MovieClip):Void{
   
   window.removeMovieClip();
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 12 Sep 2008 11:08 am
joder perfecto, ahora si que si....loq unico que no entiendo es que debo modificar para que el tiempo de cerrarse sea mayor, al menos un segundo y medio.

Por lo demas todo perfecto.....muchísimas gracias elchininet....

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 12 Sep 2008 12:31 pm
Cuando te refieres al tiempo de cerrarse te refieres al tiempo que demora la animación de cerrar la ventana?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 12 Sep 2008 03:24 pm
si

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 12 Sep 2008 04:05 pm
Bueno si te fijas en los ejemplos que te puse de TweenMax:

Código ActionScript :

//---Animará el objeto desde la posición actual en las "x" 
//---hasta 200 en medio segundo 
TweenMax.to(objeto, .5, {_x:200}); 


Todos están trabajados con medio segundo, por lo tanto el tiempo de la animación lo da el segundo parámetro (.5), si en este pones 1.5 (me parece demasiado tiempo) entonces la animación durará ese tiempo.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 15 Sep 2008 08:25 am
OK...MUCHAS GRACIAS POR TODO...FUNCIONA PERFECTAMENTE, A PARTIR DE AHORA SOY FANS TUYO...JJEJEJEJEJJEEJ

Por jose_ycp

18 de clabLevel



 

Sevilla

firefox
Citar            
MensajeEscrito el 06 Feb 2010 03:10 am

elchininet escribió:

TweenMax es una librería que al igual que la clase Tween de Adobe te permite crear animaciones pero con un código más sencillo, limpio y un rendimiento extremadamente superior.

Pon la carpeta "gs" donde mismo está tu flash, estas clases solo se utilizan para compilar el SWF. Después en el primer frame de tu película pones:

Código ActionScript :

import gs.TweenMax;
import gs.easing.*;


Ahora lo próximo, las ventanas que quieres abrir deben ser movieClips, los debes tener en tu biblioteca linkeado para Action Script. Debes ir a la biblioteca darle click derecho al MovieClip, escoger linkage..., después marcas Export for ActionScript y dejas marcado Export in first frame, y le pones un nombre en Identifier, trata de que el nombre no contenga espacios ni caracteres especiales.


hola... estoy haciendo algo exactamente muy similar a lo que "jose_ycp" dice...
y... digamos que soy principiante... y las animaciones y todo el contenido de la web flash que pensaba hacer.. las diseño en photoshop completamente y paso parte por parte al adobe flash...
creando las animaciones cuadro por cuadro... al ver este post, cambio totalmente mi vida...
bahh todabia no...

mi problema es... donde esta la carpeta "gs"??
yo me baje un paquete de la pagina mencionada...
"http://blog.greensock.com/tweenmax/"
uso adobe flash CS4... y disculpen mi ignorancia..

muchas gracias..

Por cvazdesign

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Feb 2010 11:14 am
@cvazdesign, greensock ha variado mucho su código y por lo tanto paquetes y clases, el post era de hace un año y en aquel momento era así, en este momento la carpeta que debes poner en tu proyecto es "com" y para importarla sería así:

Código ActionScript :

import com.greensock.TweenMax;
import com.greensock.easing.*;

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 06 Feb 2010 07:38 pm
WOWW... exelente.. muchisimas gracias elchininet

Por cvazdesign

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Feb 2010 08:38 pm
perdon.. pero no entiendo como deveria saber el codigo a que MC me estoy refiriendo...
vos decis que al hacer el arreglo.. hay que insertar los nombres de instancias??

Código :

var windows:Array = new Array("ventana1", "ventana2", "ventana3");





Código :


import com.greensock.TweenMax; 
import com.greensock.easing.*; 

//---Cantidad de botones 
var cantidad:Number = 3; 
 
//---Arreglo de ventanas 
var windows:Array = new Array("ventana1", "ventana2", "ventana3"); 
 
//---Ventana abierta 
var windowOpen:Number; 
 
//---Acciones de los botones 
for(var i:Number = 1; i <= cantidad; i++){ 
    
   this["boton" + i].numero = i; 
    
   //---OnPress de los botones 
   this["boton" + i].onPress = function():Void{ 
       
      //---Si existe una ventana abierta cerrarla 
      if(windowOpen > 0){ 
          
         var winClose:MovieClip = this._parent[windows[windowOpen - 1]]; 
          
         //---Animar la ventana hacia el centro y escala 0 
         TweenMax.to(winClose, .5, {_x:Stage.width / 2, _y:Stage.height / 2, _xscale:0, _yscale:0, ease:Cubic.easeOut, onComplete:deleteWindow, onCompleteParams:[winClose]}); 
          
      } 
       
      //---Tiempo que se tiene que demorar en abrir la ventana 
      var tiempo:Number = (windowOpen > 0) ? .5 : 0; 
       
      var win:MovieClip = this._parent.attachMovie(windows[this.numero - 1], windows[this.numero - 1], this._parent.getNextHighestDepth()); 
      win._x = (Stage.width - win._width) / 2; 
      win._y = (Stage.height - win._height) / 2; 
       
      //---Animar la ventana desde el centro hasta la posición actual 
      TweenMax.from(win, .5, {_x:Stage.width / 2, _y:Stage.height / 2, _xscale:0, _yscale:0, delay:tiempo, ease:Cubic.easeOut}); 
       
      //---Declarar la ventana que se abierto 
      windowOpen = this.numero; 
       
   } 
    
} 
 
//---Función de borrar el movieAbierto 
function deleteWindow(window:MovieClip):Void{ 
    
   window.removeMovieClip(); 
    
} 



la pregunta es... ¿donde define los botones?...
como los meto en el codigo.. ?

Por cvazdesign

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Feb 2010 08:58 pm
o...
ese codigo es la accion de cada boton..?

:shock:

Por cvazdesign

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Feb 2010 10:09 pm

elchininet escribió:

Ahora debes crear en un arreglo los nombres del linkage de los clips en la biblioteca, por ejemplo si los movies están linkeados como "ventana1", "ventana2", "ventana3", etc... Debes hacer un arreglo como este:

Código ActionScript :

var windows:Array = new Array("ventana1", "ventana2", "ventana3", etc...);


A su vez el nombre de instancia de los botones que abren las ventanas debe ser "boton1", "boton2", "boton3", etc... El "boton1" abre la "ventana1", el 2 la 2 y así sucesivamente...

Cuando lo tengas listo vamos a la función para abrir o cerrar la ventana.


Esta es la respuesta, los botones tienen nombre de instancia "boton1", "boton2", "boton3", etc... y el código de cada botón está dentro del ciclo:

Código ActionScript :

 this["boton" + i].onPress = function():Void{
.
.
.


Como "i" toma valores desde 1 hasta la cantidad de botones, el código irá asignando la acción de onPress a los botones que se llamen la cadena "boton" + el valor de la variable "i".

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 06 Feb 2010 10:35 pm
ahahaha.. voy recordando mis viejas clases de c++
jaja..

muchas gracias.. voy a seguir aver con que me topo..
gracias por ayudarme elchininet

Por cvazdesign

3 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.