Comunidad de diseño web y desarrollo en internet online

Navegar por un Movieclip

Citar            
MensajeEscrito el 16 May 2011 06:30 pm
Hola!!!

Tengo un MC en mi escenario que se divide en 4 cuadrantes dispuestos horizontalmente.

Tengo unos botones que me sirven para navegar entre estos cuadrantes de izquierda a derecha de esta manera:

Código ActionScript :

function atrasito(e:MouseEvent){
TweenLite.to(coso_mc, 0.5, {x:-500, y:100, motionBlur:true, ease:Cubic.easeOut});
};


asi como lo tengo el boton para atras solo me sirve para pasar de un cuadrante a otro, pero no para navegar entre los 4 cuadrantes, necesito algo parecido a current frame, pero obvio aca no aplica.

tal vez con switch o con if-else
o hay una mejor opcion? ... teniendo en cuenta que en la parte opuesta de la pantalla tengo otro MC con similares caracteristicas y que al moverlo el otro MC debe volver a su posicion inicial y viceversa.

Gracias!!!!

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 17 May 2011 07:08 pm
nadie?
:shock:

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 17 May 2011 07:11 pm
Es que no se entiende la pregunta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 May 2011 07:35 pm
Hola Jorge,

Mira: mi escenario mide 500x500

tengo un MC que tiene 8 cuadrados del tamaño del escenario cada uno, osea 500x500
estan dispuestos en una matriz de 4x2, o sea 2 columnas y 4 filas

como cada cuadrado mide lo mismo que mi escenario, tengo una serie de botones que ubican cada cuadrado en el centro de mi stage.

Quiero unos botones que me permitan navergar por esos cuadrados dentro de mi MC
cada cuadrado de 500x500 corresponde a una seccion de mi proyecto

Gracias Jorge

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 17 May 2011 07:44 pm
Pues necesitas 4 tweens de este estilo:

Código ActionScript :

TweenLite.to(coso_mc, 0.5, {x:-500, y:0})
TweenLite.to(coso_mc, 0.5, {x:0, y:0})
TweenLite.to(coso_mc, 0.5, {x:-500, y:500})
TweenLite.to(coso_mc, 0.5, {x:-500, y:500})

Esas son las cuatro posiciones, asigna cada Tween a cada botón

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 May 2011 09:10 pm
Hola Jorge

se me olvido mencionar lo mas importante!

tengo un boton que me lleva a la izquierda Y otro a la derecha, pero como son mas de dos cuadros, estos botones deben cambiar su funcion dependiendo del cuadro que este en ese momento en el escenario.

si cada cuadro fuera un frame usaria currentFrame para cambiar con condiciones la funcion de los botones, pero como en este caso la transicion es animada, trabajo en un unico frame

entonces lo que busco es algo asi como un “ currentPOSICION”

que opinas Jorge?
Gracias

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 May 2011 02:17 pm
Tienes que setar una variable que te diga en que cuadrante estás, el primero no muestra la flecha a la izquierda ni el último a la derecha. Luego sabiendo cual es el cuadrante actual, tienes una función avanza y otra retrocede, que con una serie de if aplican el tween adecuado de la lista que te puse. Piénsalo un poco

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 May 2011 03:10 pm
Hola Jorge

creeme que ya habia pensado algo parecido como dije al iniciar el post, pero lo que no se es que valor darle a la variable para que me diga en que cuadrante estoy

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 May 2011 03:49 pm
lo que debes hacer es mete en un array las posiciones en el eje x lo puedes hacer manual o atravez de un for simplemente es una tabla de multiplicar

ancho del 1 objeto + el ancho del 2 objeto...

despues en las funciones de avanze y retroceso aumentas un index o disminuyes asi seal el caso.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

msie
Citar            
MensajeEscrito el 18 May 2011 03:53 pm
Puedes usar simplemente un numero

Código ActionScript :

var pos:int = 1;
siguiente.onPress = function(){
   if(pos==4) pos = 1
   else pos++
   siguiente()
}
function siguiente(){
   switch(pos){
   case 1:
       TweenLite.to(coso_mc, 0.5, {x:0, y:0}) 
       break;
   case 2:
       TweenLite.to(coso_mc, 0.5, {x:-500, y:0}) 
       break;

     etc ....
   }
}


termina de cuadrarlo para adelante, luego es bastante simple seguir la misma lógica en el botón hacia atrás (y crear una funci{on "anterior")

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 May 2011 04:11 pm
Hola

tengo estos dos array:

Código ActionScript :

private var posicionMenuX:Array = new Array(-1536, -768, 0, 768, 1536); 
private var posicionMenuY:Array = new Array(946, 224); 


para mover el mc en el eje Y hago esto y va muy bien:

Código ActionScript :

private function subirBajarMenu(e:MouseEvent):void{
               if(all_mc.menu_mc.y==posicionMenuY[0]){
                  TweenLite.to(all_mc.menu_mc, 0.5, {y:posicionMenuY[1], ease:Cubic.easeOut, onComplete:mostrarTit});
                  }else{
                  TweenLite.to(all_mc.menu_mc, 0.5, {y:posicionMenuY[0], ease:Cubic.easeOut, onComplete:mostrarFle});
                  }
               }


pero no le encuentro la logica para los botones atras y adelante,
¿como seria el bucle para eue me recorra los elementos del array?

Gracias

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 23 May 2011 04:45 pm
Tienes que tener un contador que apunte al elemento

cont = 0

Luego la funcion mueveCuadrante lo recorre

Código ActionScript :

function mueveCuadrante(adelante:Boolean){
   if(adelante){
      cont = (cont<=posicionMenuX.length)?cont++:0;
   } else {
       cont = (cont>0)?cont--:0;
   }
   TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[cont], ease:Cubic.easeOut, onComplete:mostrarTit}); 
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 May 2011 04:54 pm
u la funcion mueveCuadrante quien la dispara?

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 23 May 2011 05:07 pm
Las flechas, y pensandolo como es un Mouse.CLICK no puede pasar parámetros, entonces lo puedes cambiar así (suponiendo que la flecha adelante se llame "adelante" y la otra "atras")

Código ActionScript :

function mueveCuadrante(evt:MouseEvent){
  var adelante:Boolean = (evt.target.name=="adelante")
  (..)


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 May 2011 05:39 pm
Hola Jorge, mientras me respondias decidi probar con else if y lo logre, excepto porque no puedo controlar la aparicion y desaparicion de los botones anterior siguiente:

Código ActionScript :

private function siguiente(e:MouseEvent):void{
               if(all_mc.menu_mc.x==posicionMenuX[0]){
                  TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[1], ease:Cubic.easeOut});
                  all_mc.next_mc.visible=true;
                  }else if(all_mc.menu_mc.x==posicionMenuX[1]){
                     TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[2], ease:Cubic.easeOut});
                     all_mc.next_mc.visible=false;
                  }else if(all_mc.menu_mc.x==posicionMenuX[2]){
                     TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[3], ease:Cubic.easeOut});
                     all_mc.next_mc.visible=true;
                     }else if(all_mc.menu_mc.x==posicionMenuX[3]){
                        TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[0], ease:Cubic.easeOut});
                        all_mc.next_mc.visible=true;
                     }else if(all_mc.menu_mc.x==posicionMenuX[4]){
                        TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[3], ease:Cubic.easeOut});
                        all_mc.next_mc.visible=true;
                     }
               }
               
            private function anterior(e:MouseEvent):void{
               if(all_mc.menu_mc.x==posicionMenuX[2]){
                  TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[1], ease:Cubic.easeOut});
                  all_mc.prev_mc.visible=true;
                  }else if(all_mc.menu_mc.x==posicionMenuX[1]){
                     TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[0], ease:Cubic.easeOut});
                     all_mc.prev_mc.visible=true;
                  }else if(all_mc.menu_mc.x==posicionMenuX[0]){
                     TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[3], ease:Cubic.easeOut});
                     all_mc.prev_mc.visible=true;
                  }else if(all_mc.menu_mc.x==posicionMenuX[3]){
                     TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[4], ease:Cubic.easeOut});
                     all_mc.prev_mc.visible=false;
                  }
               }


Una vez que los desaparezco ya no vuelven a aparecer
que debo hacer?

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 23 May 2011 05:44 pm
¿Que tal si tuvieras 18 cuadrantes? 18 + 18 = 36 if ... else ?
En la función que te puse agrego estas dos líneas al final de la funcion mueveCuadrante para la visibilidad de las flechas, y quedaría así

Código ActionScript :

function mueveCuadrante(evt:MouseEvent){ 
   var adelante:Boolean = (evt.target.name=="adelante") 
   if(adelante){ 
      cont = (cont<=posicionMenuX.length)?cont++:0; 
   } else { 
       cont = (cont>0)?cont--:0; 
   } 
   TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[cont], ease:Cubic.easeOut, onComplete:mostrarTit});  
   adelante.visible = (cont<(posicionMenuX.length-1))
   atras.visible = cont>0
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 May 2011 05:58 pm
mira lo tengo asi pero no pasa nada:

Código ActionScript :

public class Main extends MovieClip{
         private var posicionMenuX:Array = new Array(1536, 768, 0, 2304, 3072); 
         private var posicionMenuY:Array = new Array(946, 224);
         private var cont=0;
      
      public function Main(){
         all_mc.prev_mc.addEventListener(MouseEvent.CLICK, mueveCuadrante);
         all_mc.next_mc.addEventListener(MouseEvent.CLICK, mueveCuadrante);
         }

private function mueveCuadrante(evt:MouseEvent){  
                  var adelante:Boolean = (evt.target.name=="adelante")  
                  if(adelante){  
                     cont = (cont<=posicionMenuX.length)?cont++:0;  
                     } else {  
                      cont = (cont>0)?cont--:0;  
                        }  
                  TweenLite.to(all_mc.menu_mc, 0.5, {x:posicionMenuX[cont], ease:Cubic.easeOut});   
                  all_mc.next_mc.visible = (cont<(posicionMenuX.length-1)) 
                  all_mc.prev_mc.visible = cont>0 
                  }

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 23 May 2011 06:08 pm
Eso es porque no lo entiendes, pero tiene arreglo. Primer error:

Mira la llamada:

all_mc.prev_mc.addEventListener(MouseEvent.CLICK, mueveCuadrante);

Y mira la primer condición

var adelante:Boolean = (evt.target.name=="adelante")

¿Se llama prev_mc "atras" y next_mc "adelante"? (me refiero a nombre de instancia)
¿No da ningún error?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 May 2011 06:26 pm
si, asi se llaman y no da error

lo unico que ocurre al presionar next_mc o prev_mc
es que prev_mc se desaparece

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 23 May 2011 06:42 pm
Lo siguiente es trazar los valores y ver si algo da undefined: el contador, el array y el clip a mover

Código ActionScript :

trace("Cont = "+cont)
trace("Array "+posicionMenuX)
trace(all_mc.menu_mc)


Los valores se tienen que mostrar en la ventana de salida, mira que todo tenga valor y que no haya nada undefined

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 May 2011 06:46 pm
me devuelve

Cont = 0
Array 1536,768,0,2304,3072
[object MENU_12]

Por dianita666

Claber

185 de clabLevel



 

safari
Citar            
MensajeEscrito el 23 May 2011 08:10 pm
Es correcto ... ¿estas lanzando al mismo tienpo un Tween para el eje y? Si es así, debes integrar los dos en uno.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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