GotoAndStop(50); Ayuda

Tengo un swf llamado home.swf desde este swf llamo mediante un movie clip a otro swf llamado publicidad.swf a su vez publicidad.swf tiene un movie clip que llama a publicidad_softball.swf,
home.swf "Código que llama a publicidad.swf"
-----------------------------
on (rollOver) {
gotoAndPlay(2);
//_root.btnpublicidad._visible = true;
//_root.btnpublicidad.gotoAndStop(1);
play();
}
on (releaseOutside, rollOut) {
gotoAndPlay(7);
// _root.btnpublicidad.enabled = false;
play();
}
on (release)
{
_root.btnpublicidad.onRelease=function(){
_root.btnpublicidad.enabled=false;}
_root.btnservicios.onRelease=function(){
_root.btnservicios.enabled=false;}
_root.btnporque.onRelease=function(){
_root.btnporque.enabled=false;}
_root.btnhistoria.onRelease=function(){
_root.btnhistoria.enabled=false;}
_root.btncontactanos.onRelease=function(){
_root.btncontactanos.enabled=false;}
_root.btnporque.onRelease=function(){
_root.btnporque.enabled=false;}
unloadMovie(2);
loadMovieNum("publicidad.swf", 0);
}
-----------------------------
Publicidad.swf tiene unas animaciones dentro de un movie clip con nombre de instancia publicidad1, este contiene unas animaciones y a su vez estos movies clips tiene un botón que llama a publicidad_softball.swf pero lo llama desde el fotograma 67.
Codigo Boton que llama a publicidad_softball.swf
------------------------------
on (rollOver) {
gotoAndPlay(2);
//_root.btnpublicidad._visible = true;
//_root.btnpublicidad.gotoAndStop(1);
play();
}
on (releaseOutside, rollOut) {
gotoAndPlay(7);
//_root.btnpublicidad.enabled = false;
play();
}
on (release)
{
_parent.btnhome.onRelease=function(){
_parent.btnhome.enabled=false;}
loadMovieNum("publicidad_softball.swf", 2);
}
------------------------------
Hasta aquí todo funciona perfecto el problema es el siguiente estando en publicidad_softball.swf yo quiero retornar a publicidad.swf pero quiero ir al fotograma 67 del movie clip publicidad1
código utilizado que me devuelve a publicidad.swf pero no me envía al movie clip publicidad1 del mismo publicidad.swf
--------------------------------
on (rollOver) {
gotoAndPlay(2);
//_root.btnpublicidad._visible = true;
// _root.btnpublicidad.gotoAndStop(1);
play();
}
on (releaseOutside, rollOut) {
gotoAndPlay(7);
//_root.btnpublicidad.enabled = true;
play();
}
on (release)
{
_parent.btnhome.onRelease=function(){
_parent.btnhome.enabled=true;}
_root.publicidad1.gotoAndStop(50);
loadMovieNum("publicidad.swf", 2);
}
---------------------
¿Alguna Idea?

1 Respuesta

Respuesta
1
Es fácil:
Tu usas la carga por los niveles, así que si has cargado la publicidad.swf en nivel 2:
loadMovieNum("publicidad.swf", 2);
para controlar este movieclip (publicidad.swf) tienes que usar la sintaxis siguiene:
_level2.gotoAndStop(50);
o
_level2.cualquieraFuncion();
El control de carga por niveles esta bien pero mejor control de la múltiple carga consigues mediante los movie clips de carga:
loadMovie("archivo.swf", "algun_movieclip");
luego la ruta sera:
_root.algun_movieclip.gotoAndStop(50);
No funciona..
No se si tiene que ver con que publicidad.swf contiene muchas animaciones y botones y todo se encuentra dentro de un movieclip con nombre de instancia publicidad1
He puestro a prueba las 2 y no fucnionan.
Me parece que publicidad.swf no se esta cargando en nivel2 fíjate arriba, de todas formas he probado ya con varios niveles.
¿Sera qué saco todos los botones y animaciones del movie clip y lo dejo en el primer frame sin movie clip? Así debería funcionar el gotoadnstop sin necesidad de usar el movie clip.
Dejame probar y te aviso
Si tienes un lio autentito de los movieclips y cargas que no sabe ni el creador la ruta correcta de su fotograma la mejor solución es poner un texto dinámico con una variable por ejemplo "miruta" dentro de movieclip que quieres conocer la ruta hacia el.
Y luego dentro en la fotograma escribes la frase:
miruta.contentPath(this);
Y ejecuta la peli.
En el texto miruta te aparecerá la ruta correcta de tu movieclip :))
Sigue sin funcionar ya no se que hacer, he hecho todo lo me dices lo he puesto en el level que se carga pero sigue sin funcionar...
Luego pensé en crearle un botón y simplemente mandarlo a una instancia vacía para que me retornara publicidad.swf, pero ahora la función
_parent.btnhome.onRelease=function(){
_parent.btnhome.enabled=true;}
Dejo de funcionar...
¿Alguna otra idea?
¿Ideas?
miruta.contentPath(this);
¿Qué ruta te ha devuelto?
Ejecuto home.swf luego hago clic en publicidad.swf a esta altura me da la siguiente dirección
_level0.publicidad1.miruta
luego hago clic en publicidad_softball.swf este me da la siguiente direccion
_level2.miruta
Luego retorno a publlicidad.swf y me da la siguiente dirección
level2.publicidad1.miruta
Es más claro que agua:
Una vez tienes la publicidad en el nivel 0
_level0.publicidad1.miruta
y otra vez la tienes en el nivel 2
_level2.publicidad1.miruta
cual es el nivel correcto?
Cuando esta en el nivel 0 llamalo con el nivel 0 y cuando esta en el 2 llama 2
si lo quieres meter en veinte niveles tienes que crearte algún orden o sistema para saber tu en que nnivel estas para poder apuntarlo.. si no quieres crear ordenes de niveles usa simplemente siempre el mismo nivel para una concreta instancia
He hecho lo que me dijiste y no funciona Algo estoy haciendo mal, dejame volver a explicar todo y colocarte el código que cambie incluye unas imágenes.
Tengo 3 películas
Home.swf
publicidad.swf
publicidad_softball.swf
---------------------------------------------------------
Home.swf hago clic en un botón y me llama a publicidad.swf
Codigo del boton:
http://www.creative.com.ve/coco1/home.JPG
---------------------------------
on (rollOver) {
    gotoAndPlay(2);
    //_root.btnpublicidad._visible = true;
    //_root.btnpublicidad.gotoAndStop(1);
    play();
}
on (releaseOutside, rollOut) {
    gotoAndPlay(7);
   // _root.btnpublicidad.enabled = false;
    play();
}
on (release)
{
    _root.btnpublicidad.onRelease=function(){
    _root.btnpublicidad.enabled=false;}
    _root.btnservicios.onRelease=function(){
    _root.btnservicios.enabled=false;}
    _root.btnporque.onRelease=function(){
    _root.btnporque.enabled=false;}
    _root.btnhistoria.onRelease=function(){
    _root.btnhistoria.enabled=false;}
    _root.btncontactanos.onRelease=function(){
    _root.btncontactanos.enabled=false;}
    _root.btnporque.onRelease=function(){
    _root.btnporque.enabled=false;}
    unloadMovie(2);
loadMovieNum("publicidad.swf", 0);
}
----------------------------------------
publicidad.swf hago clic en un botón y me llama a publicidad_softball.swf
Recuerda que este botón se encuentra en publicidad.swf y esta dentro de un movie clip con nombre de instancia "publicidad1"
Codigo del boton:
http://www.creative.com.ve/coco1/publicidad.JPG
----------------------------------------
on (rollOver) {
    gotoAndPlay(2);
    //_root.btnpublicidad._visible = true;
    //_root.btnpublicidad.gotoAndStop(1);
    play();
}
on (releaseOutside, rollOut) {
    gotoAndPlay(7);
    //_root.btnpublicidad.enabled = false;
    play();
}
on (release)
{
    _parent.btnhome.onRelease=function(){
    _parent.btnhome.enabled=false;}
   loadMovieNum("publicidad_softball.swf", 0);
}
----------------------------------------------------
publicidad_softball.swf
Este swf tiene un movie clip que no tiene ningún nombre de instancia dentro de este esta mi animación y tiene un botón que tiene este código:
Codigo del boton:
http://www.creative.com.ve/coco1/publicidad_softball.JPG
--------------------------------------------
on (rollOver) {
    gotoAndPlay(2);
    //_root.btnpublicidad._visible = true;
//    _root.btnpublicidad.gotoAndStop(1);
    play();
}
on (releaseOutside, rollOut) {
    gotoAndPlay(7);
    //_root.btnpublicidad.enabled = true;
    play();
}
on (release)
{
    _parent.btnhome.onRelease=function(){
    _parent.btnhome.enabled=true;}
    level0.publicidad1.gotoAndPlay(50);  
    loadMovieNum("publicidad.swf", 0);
}
------------------------------------------------
Cuando hago clic sobre el botón me retorna a la película publicidad.swf pero arranca desde el fotograma 0 y yo le estoy indicando que debe arrancar desde el fotograma 50
Todos corren en el mismo nivel 0
Aquí te dejo 3 imágenes en mi servidor para que puedas visualizar, ¿a mi me parece que estoy haciendo lo que tu me dijiste es correcto?
Cabe destacar que estoy trabajando con as 2.0 y flash cs4
http://www.creative.com.ve/coco1/home.JPG
http://www.creative.com.ve/coco1/publicidad.JPG
http://www.creative.com.ve/coco1/publicidad_softball.JPG
Saludos cordiales y disculpa la molestia
No te preocupes por mi tiempo o molestia, lo más importante para obtener una buena respuesta es redactar buena pregunta!
Hasta ahora no he entendido muy bien cual es cual peli y como comunican y como deber comunicar entre si. Solo me imagino algo que no tengo 100% claro de tu estructura pero aquí tienes varias sugerencias:
1 - la syntaxis de _level debe empezar con guin bajo: _level0.publicidad1.gotoAndPlay(50);
2 - no importa donde esta ubicado el botón, imorta la ruta desde la _root o _level, pero tu estas asignando la función de los botones mediante otros botones.. allí si que importa o hay que hacerlo más sencillo y eficaz
3 - on (release){   
    _parent.btnhome.onRelease=function(){
    _parent.btnhome.enabled=false;}}
Estas frase dice: que cuando pulsas y sueltas en un botón (desconocido), pues que el botón con el nombre de btnhome que esta ubicado un level o un parente movieclip encima del botón pulsado obtenga la función para simismo que cuando estará pulsado el mismo se deshabilitara. Pero no ejecuta hasta que lo pulsas después del pulsar otro.. esto no he visto en ningún AS y los he leído miles. :), es posible que tu error estará por allí. Es decir en vez de usar _parent. Usa la ruta completa para apuntar el botón.
_level0-o-ubicaciondetuboton.btnhome.onRelease= etcc...
4 - prueba restructurar tu estructura con funciones fuera de botones: es decir quitar que onrelease estará dentro de onrelease, sera más fácil añadir o depurar cualquier parte del código en cualquier nivel:
A - en todos botones pon el código direstamente encima de ellos de manera
on (release){}
b - en la escena root crea varias funciones por ejemplo
función habilitame(){
btnhome.enabled=true;
otroboton.enabled=true;}
funcion deshabilitame(){
btnhome.enabled=false;
otroboton.enabled=false;}
funcion cargame(){
    loadMovieNum("publicidad.swf", 0);
}
c - en el boton que tiene que habilitar o deshabilitar simplemente llamara la funcion
on (release){habilitame();};
on (release){deshabilitame();};   ...etc...
5 - hay una cosa rara incompatible:
Level0. Publicidad1. gotoAndPlay(50);  
loadMovieNum("publicidad.swf", 0);
Estas dos frases tienes juntas y hay un detalle importante! Cuando cargaras algo con el level 0 eso dices que quitara todo lo que hay en el level 0 y cargara allí la publicidad.swf
estos dos frases no pueden funcionar juntas por que les dices a la vez que haga algo en el _level0 y que borra y recarga el _level0
no llegas a la fotograma 50 por que con la siguiente frase loadMovieNum("publicidad.swf", 0); estas borrando todo del level0, ya no existe fotograma 50 allí.
Y si la fotograma 50 esta dentro publicidad.swf, tampoco llegara por que la ejecución de los comandos siempre tienen un retraso más largo en milisegundos que la lectura del código dentro del procesador, es decir:
Level0. Publicidad1. gotoAndPlay(50);  
loadMovieNum("publicidad.swf", 0);
Estas dos frases el procesador lea en 0,00001 segundo pero mientras vaya a fotograma 50 tardaría ya 0.002 segundos así que ya no existe fotograma 50, así que tienes que separarlas con setTimeout(función, milisegundos); o poner una en un botón o acción y otra en otro botón o acción..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas