Comunidad de diseño web y desarrollo en internet online

cómo me muevo entre niveles de movie clips en AS3?

Citar            
MensajeEscrito el 19 Ago 2012 10:43 am
Hola compañeros, verán llevo poco tiempo usando AS3 y flash y estoy trabajando en una web, a mitad del desarrollo me he dado cuenta de que no se moverme entre los niveles de movie clips, y necesito enlazar un botón con un movie clip q está en un nivel diferente al de botón. Llevo buscando un par de semanas y parece q soy un poco torpe para eso.

¿Podrían explicarme por favor, cómo me muevo entre niveles de mc con AS3?

les dejo aquí el código del botón del q os hablaba:

Código :

leermas_btn.buttonMode = true;

leermas_btn.addEventListener(MouseEvent.CLICK, clickLeerMas);

}

function clickLeerMas(event:MouseEvent):void
{
agenda_mc.gotoAndPlay("DentroAgenda");
   
}

agenda_mc no se encuentra en el mismo nivel que leermas_btn y estoy un poco desesperado por encontrar la respuesta al enigma.

Muchas gracias a todos por vuestro tiempo.

Un saludo.

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari
Citar            
MensajeEscrito el 19 Ago 2012 03:50 pm
Hola otra vez señores, verán he estado probando con ciertas soluciones a mi problema, y he llegado a esto:

Código :

import flash.display.DisplayObject;


leermas_btn.addEventListener(MouseEvent.CLICK, clickLeerMas);


function clickLeerMas(ev:MouseEvent):void
{
root.logo_home_contenedor_mc.botonera_principal_mc.agenda_mc.gotoAndPlay("DentroAgenda");
}


Si vemos el código, tenemos una serie de niveles de profundidad de movie clips y son, "logo_home_contenedor_mc", "botonera_principal_mc", y "agenda_mc". Donde "agenda_mc" es el movie clip al cual quiero llegar, activando un botón que se encuentra en otro movie clip diferente.

Cuando hago Test movie para ver como va la web, me devuelve este error.


Symbol 'btn_stages_inicio_mc', Layer 'AS3', Frame 1, Line 36 1119: Access of possibly undefined property logo_home_contenedor_mc through a reference with static type flash.display:DisplayObject.

Y no se como solucionarlo, alguna idea por favor?

Muchas gracias por vuestro tiempo

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari
Citar            
MensajeEscrito el 21 Ago 2012 06:31 pm
El MC está en escena al momento de declarar la función. Si quieres pasar el error a runtime (en caso de que exista) usa notación de Array

MovieClip(root["logo_home_contenedor_mc"].["botonera_principal_mc"].["agenda_mc"]).gotoAndPlay(....)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Ago 2012 02:59 pm
Gracias otra vez Solisarg, pero ciertamente no he entendido mucho de lo que me has dicho. No se que significa "pasar el error a runtime" ni tampoco cómo llamar y usar una notación de Array. He estado investigando en cristalab y en internet en general y creo que soy demasiado novato con esto, pues no consigo relacionar las respuestas que he conseguido a mi problema y solucionarlo.

¿Te importaría mostrarme cómo quedaría el código entero tipeado en AS3, por favor? Me haríais un gran favor, pues ya llevo mucho retraso con este trabajo.

Código :

import flash.display.DisplayObject;
import flash.display.MovieClip;

leermas_btn.addEventListener(MouseEvent.CLICK, clickLeerMas);

function clickLeerMas(ev:MouseEvent):void
{
   
   MovieClip(root["logo_home_contenedor_mc"].["botonera_principal_mc"].["agenda_mc"]).gotoAndPlay("DentroAgenda"));
}


Éste es el aspecto que tiene despues de aplicar (mal aplicada creo) la solución de Solisarg, y en respuesta despues de probarlo me devuelve estos dos nuevos errores.

Symbol 'btn_stages_inicio_mc', Layer 'AS3', Frame 1, Line 36 1084: Syntax error: expecting identifier before leftbracket.

Lamentablemente tampoco se a que se refiere con el "identificador".

PD: El mc "btn_stages_inicio_mc" está en escena cuando clickas sobre él y debería llevarte a el mc "agenda_mc" situado en otro nivel diferente.

Alguien puede ayudarme?

Muchas gracias por vuestro tiempo.

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari
Citar            
MensajeEscrito el 22 Ago 2012 05:19 pm
Cierras mal el paréntesis

MovieClip(root["logo_home_contenedor_mc"].["botonera_principal_mc"].["agenda_mc"]).gotoAndPlay("DentroAgenda");

Si haces

trace(root["logo_home_contenedor_mc"].["botonera_principal_mc"].["agenda_mc"])

Debería salir MovieClip en el Panel de salida, si sale undefined quiere decir que la ruta no existe o es incorrecta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 22 Ago 2012 05:30 pm
ese parentesis extra lo puse por q el mismo flash me dijo que le faltaba. Si pongo todo el código como me has dicho, me genera estos 4 errores de tipo:


Symbol 'btn_stages_inicio_mc', Layer 'AS3', Frame 1, Line 37 1084: Syntax error: expecting identifier before leftbracket.


Symbol 'btn_stages_inicio_mc', Layer 'AS3', Frame 1, Line 37 1084: Syntax error: expecting rightparen before semicolon.


Los otros dos errores que faltan son los mismos, uno por cada linea de código:


function clickLeerMas(ev:MouseEvent):void
{
MovieClip(root["logo_home_contenedor_mc"].["botonera_principal_mc"].["agenda_mc"]).gotoAndPlay("DentroAgenda");

trace(root["logo_home_contenedor_mc"].["botonera_principal_mc"].["agenda_mc"])
}

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari
Citar            
MensajeEscrito el 22 Ago 2012 05:41 pm
He encontrado esta solución por ahí:

Código :


var myArray: Array = ["root","logo_home_contenedor_mc", "botonera_principal_mc", "agenda_mc"];


leermas_btn.addEventListener(MouseEvent.CLICK, clickLeerMas);

function clickLeerMas(ev:MouseEvent):void
{

myArray.gotoAndPlay.("DentroAgenda");

}


Y cuando testeo la web, arranca y funciona, no me devuelve ningun error de tipeo, pero cuando hago click en el mc que debería llevarme a "agenda_mc", en el output, me devuelve este error.

TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
at vilipendios_fla::btn_stages_inicio_mc_27/clickLeerMas()

y ahí me he vuelto a quedar.

Que opinas ?

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari
Citar            
MensajeEscrito el 22 Ago 2012 06:04 pm
Que si esto da error o da undefined

trace("ruta "+root.logo_home_contenedor_mc.botonera_principal_mc.agenda_mc)

Estas tratando de acceder a una ruta que no existe

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 22 Ago 2012 06:12 pm
Y cómo puedo solucionar eso? Por q te aseguro q la ruta existe, vamos, q la creé yo y la he recorrido mas de una vez.

Muchas gracias.

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari
Citar            
MensajeEscrito el 22 Ago 2012 06:18 pm
efectivamente da undefined:


Symbol 'btn_stages_inicio_mc', Layer 'AS3', Frame 1, Line 6 1119: Access of possibly undefined property logo_home_contenedor_mc through a reference with static type flash.display:DisplayObject.


dónde está el error? por q la ruta existe. Cómo puedo solucionarlo?

Un saludo

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari
Citar            
MensajeEscrito el 22 Ago 2012 06:44 pm
AS3 se orienta a eventos, no a las rutas chinas que eran comunes en AS2, así que hará todo lo posible por complicarte. Intenta usando una ruta relativa y haciendo cast a MovieClip, por ejemplo

MovieClip(parent.parent.miclip).gotoAndPlay("loquesea")

Jorgfe

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 23 Ago 2012 02:38 am
Mmm.. Antes de intentarlo con el array, también lo intenté con esto q me aconsejas. De todas formas te lo pongo q veas lo que ocurre.

[code]
import flash.display.DisplayObject;
import flash.display.MovieClip;

leermas_btn.addEventListener(MouseEvent.CLICK, clickLeerMas);

function clickLeerMas(ev:MouseEvent):void
{
MovieClip(parent.parent.parent.agenda_mc).gotoAndPlay("DentroAgenda")
}
[code]

De ésta forma, me devuelve el siguiente error.

Symbol 'btn_stages_inicio_mc', Layer 'AS3', Frame 1, Line 41 1119: Access of possibly undefined property agenda_mc through a reference with static type flash.display:DisplayObjectContainer.

puff, estoy ya sin ideas.

Un saludo.

Por EvanGB

6 de clabLevel



 

Dibujo Cómics

safari

 

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