Volvamos al origen. Tenemos
Código ActionScript :
stage.addEventListener(MouseEvent.CLICK, reportClick);
function reportClick(event:MouseEvent):void
{
var obj:DisplayObject=e.target as DisplayObject
trace(obj)
//Voy a hacer algo con él, por ejemplo, desplazarlo hacia la derecha
obj.x+=100;
}
si hacemos click en cualquier
DisplayObject, nos lo moverá.
Para saber cuál es, podemos usar alguna propiedad de "obj". en este caso se suele usar la propiedad "name". Así, si tuviéramos
Código ActionScript :
stage.addEventListener(MouseEvent.CLICK, reportClick);
//le doy valor a la propiedad "name" a los "pagina"
pagina1.name="pagina1";
pagina2.name="pagina2";
pagina3.name="pagina3";
....
function reportClick(event:MouseEvent):void
{
var obj:DisplayObject=e.target as DisplayObject
trace(obj)
trace(obj.name) //saldrá "pagina1", ó "pagina2" ó "pagina3"
var indice:String=obj.name.substr(6) //saldrá "1" ó "2" ó "3"
trace(indice)
}
Vale, existe algún concepto un poco "al aire". En primer lugar las instruciones
Código ActionScript :
pagina1.name="pagina1"
pagina2.name="pagina2"
Cuando tenemos en nuestra película .fla una serie de MCs cuyo "nombre de instancia" es "pagina1", Flash lo que hace es crear una "variable que hace referencia a" nuestro MC. Es lo que nos permite escribir
Código ActionScript :
pagina1.x=200 //situa nuestro MC a 200 pixels a la derecha
Pero si hacemos un
Código ActionScript :
trace(pagina.name) //saldrá algo como "Instance1"
Así que lo que hacemos es cambiarle mediante programación el valor de dicha "propiedad" (no se puede hacer de otro modo). cuando digo propiedad, me refiero a las propiedades de un
MovieClip, la "x", la "y", el "width"... son propiedades
Vamos con la instrucción
Código ActionScript :
var obj:DisplayObject=e.target as DisplayObject
Flash, sobre "e.target" sólo sabe que es un Objeto. Puesto que nosotros sabemos que no es un Objeto sino "algo más", se lo indicamos de esa manera. Yo puedo hacer click en algún MC ó en el
Stage, así que, debo elegir ese "algo más" como lo que comparte un MovieClip con el Stage.
Como no queremos que haga nada si hacemos click en el stage, aprovechándonos de la "propiedad" name podemos escribir
Código ActionScript :
function reportClick(event:MouseEvent):void
{
if (e.target.name.substr(0,6)="pagina"){
var obj:MovieClip=e.target as MovieClip
trace(obj)
trace(obj.name) //saldrá "pagina1", ó "pagina2" ó "pagina3"
....
}
}
Observa que, primero comprobamos si el nombre comienza por "pagina", si es así, le decimos a nuestra función que e.target es ahora un "MovieClip". Eso lo hacemos por si nos interesa acceder a los MCs interiores a nuestra "paginas".
Por último, en lugar de explicar lo de substr, te remito a los métodos de la Clase
String