Foros del Web » Creando para Internet » Flash y Actionscript »

variable.gotoAndStop()

Estas en el tema de variable.gotoAndStop() en el foro de Flash y Actionscript en Foros del Web. Hola amigos. Tengo esta pantalla donde hay dos botones (btn1 y btn2) y dos clip (mc1 y mc2). Estos dos clips tienen dos fotogramas, en ...
  #1 (permalink)  
Antiguo 12/01/2009, 03:04
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 11 años, 7 meses
Puntos: 58
variable.gotoAndStop()

Hola amigos.

Tengo esta pantalla donde hay dos botones (btn1 y btn2) y dos clip (mc1 y mc2). Estos dos clips tienen dos fotogramas, en el primer fotograma esta la imagen que se ve y el segundo es un fotograma clave vacío.
Se supone que al hacer clic en el btn1, se oculta el mc1 y que al hacer clic en el btn2 se oculta el mc2 y se muestra el mc1.
Este es el as que tengo en el primer fotograma
Código:
btn1.onRelease = function() {
	mc1.gotoAndStop(2);
	"mc"+posicion.gotoAndStop(1);
	posicion = "1";
};
btn2.onRelease = function() {
	mc2.gotoAndStop(2);
	"mc"+posicion.gotoAndStop(1);
	posicion = "2";
};
Pues el caso es que no me funciona. ¿Alguna idea?
  #2 (permalink)  
Antiguo 12/01/2009, 06:27
 
Fecha de Ingreso: julio-2004
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: variable.gotoAndStop()

La sintaxis que estás utilizando no es la correcta

intenta esto:

btn1.onRelease = function() {
_root.mc1.gotoAndStop(2);
_root[ "mc" + _root.posicion ].gotoAndStop(1);
_root.posicion = "1";
};
btn2.onRelease = function() {
_root.mc2.gotoAndStop(2);
_root[ "mc" + _root.posicion ].gotoAndStop(1);
_root.posicion = "2";
};

Al utilizar los square brakets estará evaluando el contenido, por lo que el flash lo consideraría como (ej) _root.mc1.gotoAndStop(1);
Lo anterior funcionará siempre y cuando los MovieClips se encuentren en _root. En caso de que no sea así, intenta lo siguiente:

btn1.onRelease = function() {
_root.mc1.gotoAndStop(2);
this.parent[ "mc" + _root.posicion ].gotoAndStop(1);
_root.posicion = "1";
};
btn2.onRelease = function() {
_root.mc2.gotoAndStop(2);
this.parent[ "mc" + _root.posicion ].gotoAndStop(1);
_root.posicion = "2";
};

Sucede que cuando haces referencia a un objeto no es posible utilizar strings ni símbolos ( +, -, *, etc).

Para estos casos solía utilizarse eval(), pero es una función obsoleta que ha quedado en el olvido. Te recomiendo revisar la documentación de esta función y te encontrarás con otras soluciones como la que he mencionado (this[])

Otro punto importante: Cuando estás utilizando una variable para varios objetos es recomendable almacenarla en _root o globalizarla, ya que

mc1.onRelease = function(){
posicion = '2';
}

...almacenará la variable posicion dentro del MovieClip mc1.

Lo mismo sucede con las rutas, hay que tener mucho cuidado con ellas cuando haces referencia a un objeto.


Saludos


Sargento
www.sargentoweb.com

Última edición por Sargento; 12/01/2009 a las 06:32 Razón: olvidé ajustar parte del código
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:46.