Comunidad de diseño web y desarrollo en internet online

Botón en Movie Clip que llama instancia en MainMovie

Citar            
MensajeEscrito el 02 Nov 2009 07:31 pm
Hola Amigos y Victimas de Flash, ja ja.

Alguien sabe cómo es el código en AS3 para hacer que un botón en el interior de una Movie, llame una instancia en la MainMovie.

Hie un Menú en mi Frame Nr. 1 generando una Objeto que convertí en Movie que dicho Menú fuera animado y en el interior de dicha Movie cree mis botones. Los mismos, deberían de llamar instancias en la MainMovie, en el Script principal. Soy autodidacta y no se como se trabaja con rutas, etc.

Pensé que bastaba el código habitual:

btn_media.addEventListener(MouseEvent.CLICK, onMediaClick);

function onMediaClick(e:MouseEvent):void
{
gotoAndStop("Uiloadermedia");
}


btn_media = es el nombre de instancia de mi botón y "Uiloadermedia" sería el nombre de la instancia a dónde el botón devería de enviar cuando es precionado. Sin embrago, dado que btn_media está dentro de una Movie y "Uiloadermedia" no está en el interior de la isma Movie, sino en el siguiente Frame de la MainMovie, el botón no reacciona. Lógico, está dentor de una Movie y ´dede ahi no encuentra a la instancia "UIloader". Pero lo dcho, dado que no se como trabajar en rutas no se como hacerlo.

Alguien me puede ayudar.
Nota: Cuando resuelva el probelma prometo escribir esta duda demanera más especifica para que los que acaban de empezar con Flash entiendan que est todo esto y para que sirve. Saludos!!!

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 03 Nov 2009 08:29 pm
gotoAndStop puede recibir dos tipos de parámetro: número de frame o etiqueta de fotograma, pero nunca nombre de instancia, por lo que tu pregunta parte de un error conceptual. De todas formas, supongamos que quieres ir al fotograma siguiente de la línea de tiempo que contiene el MovieClip donde está el botón, puedes hacer:

parent.gotoAndStop(parent.currentFrame+1)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Nov 2009 10:18 pm
Ok Jorge, ahora la pruebo. Muchas Gracias. Cual es la diferencia entre una instancia y una etiquera de fotograma, pensaba que eran lo mismo?

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 03 Nov 2009 10:23 pm
Jorge, en donde agrego entonces el nombre de la etiqueta del fotograma a la que quiero que me envie el boton en este código que me das?

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Nov 2009 11:31 am
Lo pones en el inspector de propiedades al seleccionar el fotograma. Para mas detalles, abres Flash, le das a F1 y pones etiqueta de fotograma, hay un tuto sobre eso

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Nov 2009 12:03 pm
No me refiero a como poner el codigo en el botón. Ahora entendí que en vez de escribir "instancia" me refería a "etiqueta de fotograma". O sea que mi pregunta es como hacer que un botón dentro de un MovieClip me mande a una "etiqueta de fotograma" en la MainMovie.

btn_media.addEventListener(MouseEvent.CLICK, onMediaClick);

function onMediaClick(e:MouseEvent):void
{
gotoAndStop("Uiloadermedia");
}

btn_media: es el nombre de instancia de mi botón dentro de un MovieClip
"Uiloadermedia": etiqueta de fotograma que quiero que aparezca al presional el botón y que se encuentra en la MainMovie, no entor de mi MovieClip.

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Nov 2009 12:05 pm
Si es la línea de tiempo contenedora:

parent.gotoAndStop("Uiloadermedia")

Si es la principal también puedes usar

root.gotoAndStop("Uiloadermedia")

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Nov 2009 03:52 pm
Que tal Jorge,

ya habia trado con root, _root y parent, pero estoy trabajando en AS3 y al parecer son comandos que ya no están aceptados. Así que no funsiona de este modo. Sabes como haerlo en AS3? Gracias de nuevo.

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Nov 2009 03:59 pm
Practicamente todos las propiedades de MovieClip (y _root es un caso especial de MovieClip) se mantienen en AS3 sin el guión bajo al principio, así _parent es parent y _root es root, etc

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Nov 2009 04:01 pm
Te creo, lo dicho, soy autodidacta y no domino el tema. No obstante no funsiona de este modo. Sabes por que?

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Nov 2009 04:08 pm
Me da esta dscipcion de error utilizando parent

1061: Call to a possibly undefined method gotoAndStop through a reference with static type flash.display:DisplayObjectContainer.

y cuando uso root me da este error:

1061: Call to a possibly undefined method gotoAndStop through a reference with static type flash.display:DisplayObject.

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Nov 2009 04:16 pm
Porque el fotograma destino no estará ni en parent ni en root, deberás averiguar la relación entre ambos. Tip, agrega:

trace(this)

En el botón y en la línea de tiempo donde está la etiqueta de fotograma y tendrás una idea de ambas rutas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Nov 2009 04:24 pm
Uff, mi Jorge, me mataste. Como hago eso??? se que delante del boton se puede poner this.
o sea:
this.btn_media.addEventListener(MouseEvent.CLICK, onMediaClick);
pero como se lo agrego a la etiqueta del fotograma.

Oye mil gracias. No sabes lo que apreciotu ayuda. No puedo salir de esto desde hace tres semanas y si finalmente resuelvo este problema voy a terminar mi portafolio par apoder buscar trabajo!!! Graicias de verdad!!!

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Nov 2009 06:17 pm
Nop, sorry, ese truco ya no va mas en AS3 porque te traza el nombre de la clase del objeto. No queda otra que situarte tu mismo, ver en que línea de tiempo está el botón y en que línea de tiempo la etiqueta de fotograma, luego trepar de una a la otra sabiendo que parent sube un nivel, entonces si quieres subir dos usas parent.parent, tres, parent.parent.parent y así sucesivamente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Nov 2009 10:10 am
Que tal Jorge,
desafortunadamente no se pudo tampoco asi. El boton deberia mandar a una etiqueta de fotograma un nivel mas arriba, puesto que el boton esta dentro de un MovieClip situado en el mismo nivel que la etiqueta de fotograma a la que quiero mandar.

De tods formas prové con uno dos, tres y cuatro parent, pero no sirve.
El codigodeberia ser asi?

btn_media.addEventListener(MouseEvent.CLICK, onMediaClick);

function onMediaClick(e:MouseEvent):void
{
parent.gotoAndStop(parent."Uiloadermedia");
}

Cuando pongo esto me da el siguiente error:
1061: Call to a possibly undefined method gotoAndStop through a reference with static type flash.display:DisplayObjectContainer.

Lo he probado poniendo varias veces parent, pero, o sea parent.parent etc, pero tampoco funciona. Tambien lo puse asi:
parent.gotoAndStop("Uiloadermedia");
Pero no funciona. En tal caso me marca el mismo error.

Ojala puedas ayudare. Saludos.

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 05 Nov 2009 10:15 am
Hazle un cast

MovieClip(parent).gotoAndStop("Uiloadermedia");

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Nov 2009 05:12 pm
Jorgeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee Gracias!!!!!!!!!!!!!!!!!!!!!!!!!
Esa era, muhsisimas gracias hermano. Gracias por tu tiempo y por tu ayuda. Asi es como funciona.
Ya funciono.
Como darte las gracias?

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 05 Nov 2009 05:47 pm
Sabes que cursiosamente habia copiado el mismo boton: btn_media, en el MainMovie antes de poner e codigo que me pasaste y cuando prove con: MovieClip(parent).gotoAndStop("Uiloadermedia"); fucionó, pero si borro el botón de la MainMovie, me pone el siguiente error: 1120: Access of undefined property btn_media.

Curioso, pero en fin, funciona. Gracias.

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 08 Nov 2009 12:05 pm
Oye Jorge, tengo una duda más, si me lo permites.

Tengo un Frame, el numero 2, que es uno de los que se carga por medio del método que me enseniaste y que carga un "swf" que repoduce un video. Puse en la MainMovie un botón que me regresa al fotograma uno, que es donde tengo mi menu y que aparece en ese fotograma 2. EL problema es que al regresar al Fotograma uno, donde esta el meni, el video continua con su reproducción y se escucha el audio del mismo.

Sabes como puedo hacer para que la preproduccion del video se detenga al presionar el boton para ir al menu? Como se inhabilita dicho swf, al dejar el fotograma en donde es llamado?

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 10 Nov 2009 09:15 am
Resumen:
Código en AS3 para hacer que un botón en el interior de un MovieClip, salte a una "Etiqueta de Fame" en la MainMovie.

Supongan que tienen un Menu, que han animado y han puesto botones dentro del nivel de dicho MovieClip y no en la MainMovie. El código no es como cuando mandamos a una "Etiqueta de Fotograma" o a un "Fotograma" que se encuentra en la misma "Timeline":


btn_mi_boton.addEventListener(MouseEvent.CLICK, mi_ejemplo_Click);

function mi_ejemplo_Click(e:MouseEvent):void
{
gotoAndStop("Nombre_Etiqueta_Fotograma");
}

Puesto que no se encuentra en el mismo Nivel el botón y la "Etiqueta de Fotograma", hay que indicarle al botón usando el método "parent": que significa ir a un nivel más arriba, que su destino está en un nivel superior y no en su propia Timeline.
El código es este:

btn_mi_boton.addEventListener(MouseEvent.CLICK, mi_ejemplo_Click);

function mi_ejemplo_Click(e:MouseEvent):void
{
MovieClip(parent).gotoAndStop("Nombre_Etiqueta_Fotograma");
}

Noten que lo único que hay que cambiar es agregar: MovieClip(parent). antes del código que uno usa para mandar a otros fotogramas en la misma Timeline.

En AS3 no funciona si escriben sólo parent o _parent o level.

Ahora, después de hacer esto. Tienen que copiar su botón (seleccionen el botón y presionen "control+C") dentro del MovieClip y pégenlo en la MainMovie ("control+V"), fuera del escenario, para que no se vea.

Ahora si, presionen "control+enter" y debería de funsionar.

Si funciona, agradescanle a Jorge, que es quien pasó el código en este foro.
No lo he probado, pero según lo que escribió Jorge, creo que si su botón está no en un Nivel (Level) más abajo de la MainMovie, sino en dos o tres, debería trabajar repitiendo el comando "parent" el número de veces x Nivel:
MovieClip(parent.parent). si son dos Niveles más abajo o MovieClip(parent.parent.parent). si son tres.

Espero que les sea útil este resumen y la infomración que hay aqui. Esta es mi amnera de agradecrle al foro y a Jorge por la ayuda. Que viva el conocimiento libre y la solidaridad entre las personas. Gracias a todos los que comparten el saber, que es lo más valioso en el mundo, sin esperar a cambio dinero!

Saludos y si no se entendió algo trataré de ayudarlos, espero con el auxilio de Jorge!

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 10 Nov 2009 01:39 pm
Me quedan dos dudas:
1.como hacer para detener el sonido que se carga al llamar un "swf" externo cuando deseo regresar al Menu, o sea, cuando cambio de un Frame que carga una Pelicula externa o un sonido, al Frame que conienen mi Menu.

2. Como hacer para que un boton dentro de un swf que cargo con un Uiloader en el Timeline principal, me llame una Etiqueta de Fotograma, que no esta en su mismo swf, sino en la MainMovie, o sea, en el Timeline donde se carga.

Ojala alguien pueda completar. Mil gracias y saludos!!!!

Por iimk

16 de clabLevel



 

msie8
Citar            
MensajeEscrito el 10 Nov 2009 02:53 pm
1. Tienes que usar un objeto Sound, si el sonido está en el timeline es difícil manejarlo
2. Escribiste una especie de tutorial para hacer que un botón vaya a otro timeline/fotograma ... a menos que lo hayas copiado de algún lado, no entiendo que vuelvas a preguntar casi lo mismo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Nov 2009 03:18 pm
1. O sea que no existe algún código para detener la reproducción de sonido puesta en el Timeline? Como se haría? Como se usa un "objeto Sound" y sobre todo, como hacer para detener el sonido de un Pelicula Flash que se carga con un FLVPlayback al cambiar al Frame donde tengo el Menu Principal?
2. Intente escribir un resumen o una especie de pseudotutorial, a manera de resumen con toda la información que me pasaste para que otros no se pierdan ni tengan que leer todos los mensajes y vean más fácil de que se trato esta duda.

En lo que tengo confusión es en un caso diferente al que ya te había consultado: como hacer para que un botón que se encuentra dentro de un SWF externo (que se carga con un Uiloader en la MainMovie y en el Main Timeline), me mande a una "Etiqueta de Frame" en el Main Timeline. Ya probé con MovieClip(parent). pero en este otro caso no funciona, supongo porque el botón está en otro swf.

Gracias!!!

Por iimk

16 de clabLevel



 

msie7
Citar            
MensajeEscrito el 13 Nov 2009 04:37 pm
Encontre la respuesta al sonido:

En AS2 seria:
stopAllSounds();

En AS3 el neuvo códig es:
SoundMixer.stopAll();

Por iimk

16 de clabLevel



 

msie7

 

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