Saludos...
En viste que he respondido alrededor de 100 post sobre el tema de las rutas, pretendo explicar un poco este ámbito con los pocos (pero útiles, jejEjJEJE) conocimientos que he adquirido durante este tiempo
Diferencia entre rutas relativas y absolutas:
Como no soy ningún profesor ni tutor, solo un simple usuario igual que ustedes, no voy a entrar en palabras técnicas. A través de un ejemplo les expondré la idea, ¿ok?:
1) Supongamos que tenemos una película principal (llamémosla PP) y una película externa (que llamaremos PE).
2) En PP tenemos un botón que nos envía al frame nº 10 de un mc (MovieClip) con nombre de instancia "miMC":
on(press){
_root.miMC.gotoAndStop(10);
}
//nada dificil ni desconocido hasta aquí
3) En PE también tenemos un botón que tiene como función llevarnos al frame nº 5 de la película en si (entiéndase PE).
on(press){
_root.gotoAndStop(5);
}
//todo bien, ¿cierto?
4) Probamos nuestra películas, cada una hace todo lo que queremos… ¡estamos felices!, tanto así que se nos ocurre cargar PE en PP, pensamos hacer esto con un botón y que la película sea cargada en un mc (mcContenedor):
on(press) { loadMovie(“pe.swf”, “mcContenedor”); }
WuooO!, nos carga!!!, el regocijo es increíble… HASTA QUE SE NOS OCURRE PRESIONAR EL BOTÓN DE PE, QUE NOS LLEVARÁ AL FRAME Nº5 (como lo planificamos anteriormente) Y TODO SE NOS VA A LA MISMA ……. ujwUJAujWujUJaUJAujAuj, efectivamente nos manda al frame nº5 PERO DE PP !... nOooo… estamos desesperados, no sabemos que hacer, se nos viene el mundo abajo, nuestro jefe nos exige que esto funcione, etc., etc…
Se te ocurre la brillante idea de visitar el foro y leer este mínimo tutorial, y voiLá!!! Aprendes el concepto básico de las rutas y fin del problema
Flash es muy obediente con nosotros, lo que te sucede no es que Flash se haya levantado en contra tuya haciéndote la vida imposible, solo está haciendo lo que tu quieres que haga. Llevando esto a términos serios (ya era hora) efectivamente estás diciendo que te lance al frame 5 de la película principal. ESTO PORQUE _root HACE REFERENCIA A LA LINEA PRINCIPAL DE LA PELICULA EN SI, por ende si cargas a PE y esta tiene _root.gotoAndStop(5); estás diciendo que vaya al frame 5 de tu película principal ¿redundante pero cierto no crees?.
¿Y como diablos soluciono esto?... amigo, RUTAS RELATIVAS. Estas como lo dice su nombre, se “adecúan” al lugar en donde se encuentren (acá dejamos de utilizar _root por _parent, this entre otros).
_parent: hace referencia al nivel superior del objeto
Ej.: Dentro de mc1 se encuentra mc2, necesito ir al frame 5 de mc1 pero desde mc2
_parent.mc2.gotoAndStop(5); //con esto hago referencia a la línea de tiempo de mc1, o sea, un nivel más arriba que mc2.
this: hace referencia al objeto en si
Ej.: Quiero ir al frame 5 de mc1 con un botón que se encuentra en mc1
on(press){ this.gotoAndStop(5); } //salto al frame 5 de mc1, hago referencia a la línea de tiempo del mismo objeto.
Ahí explique un poco para entender la resolución de nuestro problema inicial. Retomando aquello y lo que mencioné anteriormente, lo haríamos de esta manera:
En PE en vez de poner:
on(press){
_root.gotoAndStop(5);
}
Utilizaremos:
on(press){
this.gotoAndStop(5);
}
Entonces cuando carguemos PE en PP la sentencia es relativa al lugar, en otras palabras sabrá que ese this hace referencia a “_root.mcContenedor.gotoAndStop(5)”, porque como les dije this apunta al obejto en si, o sea, nos llevará al frame nº5 de PE y no de PP como en un principio.
Ojalá les sirva esta pequeña y desinteresada ayuda. Obviamente esto está abierto a sus comentarios y mejoras que se puedan hacer (que es lo fundamental), la idea es que todos aprendamos.