Comunidad de diseño web y desarrollo en internet online

Acceder a MovieClip desde el _root

Citar            
MensajeEscrito el 16 Dic 2008 11:53 am
Buenas, tengo un MC llamado cat y exportado como categorias con el siguiente código:

Código :

attachMovie("bot_futbol", "futbol", 1);
futbol._x=100;
futbol._y=100;
attachMovie("bot_expo", "expo", 2);
expo._x=100;
expo._y=175;
attachMovie("bot_empresas", "empresas", 3);
empresas._x=100;
empresas._y=250;
attachMovie("bot_prensa", "prensa", 4);
prensa._x=100;
prensa._y=325;


Como podéis ver añado unos botones que tengo en la biblioteca. Después en la escena raíz añado este MC con el siguiente código:

Código :

_root.attachMovie("categorias", "cat", 1);
_root.cat._x=200;
_root.cat._y=30;
_parent.cat.futbol._x=350;
/*_root.cat.futbol.onRelease=function()
{
   trace("hello world");
}*/


En la parte final de código podéis ver que intento acceder a un botón el cual esta dentro del MC cat. Pero no lo consigo de ningun modo. He probado con _parent y sin _root además de cambiarle de nombre, pero no lo consigo.

¿Es así como se accede a objetos de nivel inferior? Ruego que me ayudéis en esto puesto que no puedo avanzar. Gracias.

Por 2isone

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2008 06:59 pm
hola, bueno, esta linea es mejor:

_root.attachMovie("categorias", "cat", 1, {_x:200, _y:30});
Esa linea crea un clip de tipo categorias, alojada en la libreria, y lo nombra cat. ok

ahora si en categorias tienes un clip interior llamado futbol, esto debe acceder a dicho clip:
_root.cat.futbol._x = 350;

para hacer puebas de que todo funciona, dime que te imprime en pantalla cuando pones estos dos codigos:
trace( _root.cat )
trace( _root.cat.futbol )

estamos en contacto.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 17 Dic 2008 03:48 pm
Mucha gracias LongeVie, me has ayudado mucho a comprimir código y a entender un poco mas los niveles en flash. Te comento:

Para trace( _root.cat ) me da _level0.cat y para trace( _root.cat.futbol) undefined. Mala cosa que me de sin definir. ¿Como haría para acceder pues?

Gracias,

Por 2isone

19 de clabLevel



 

safari
Citar            
MensajeEscrito el 17 Dic 2008 04:01 pm
hola, bueno ya se donde esta tu error, en la libreria selecciona el que se llama categorias y jala una copia al escenario, dale doble click y ya estas adentro de categorias, ahi busca el movieclip con nombre de instancia futbol, verifica que en realidad se llame futbol.

Bueno, puedo ver en el codigo incial que tienes esto: attachMovie("bot_futbol", "futbol", 1); supongo que ese codigo esta dentro del clip de biblioteca "categorias", por tanto cuando tu creas un categorias, no se crean automaticamente los clips que vienen en su script interior, osea, cuando tu creas un "categoria" futbol aun no existe, y existira hasta el siguiente fotograma, por tanto, tienes que crear categorias (_root.attachMovie("categorias", "cat", 1, {_x:200, _y:30})) y en el siguiente fotograma poner el codigo que afecta a futbol (_root.cat.futbol._x = 350;) de otro modo estaras afectando un clip que no ha sido creado y que por tanto es undefined.

La otra solucion es que pruebes con la funcion createEmptyMovieClip esa funcion crea un movieclip vacio, clip al que le puedes aplicar un attachMovie y quedaria algo asi:

Código :

var cat:MovieClip = this.createEmptyMovieClip( "cat", 1 )
cat._x = 200;
cat._y = 30;

cat.attachMovie("bot_futbol", "futbol", 1);
cat.futbol._x=100;
cat.futbol._y=100;

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 19 Dic 2008 09:17 am
Gracias por la ayuda, esta misma mañana lo pruebo y te comento lo que sea.

Un saludo y feliz navidad!

Por 2isone

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Dic 2008 10:02 am
Gracias por la respuesta de nuevo LongeVie, funciona perfectamente, pero ahora explícame una cosa. Que diferencia hay entre poner esto:

Código :

cat.attachMovie("bot_futbol", "futbol", 1);
cat.futbol._x=100;
cat.futbol._y=100;

Y esto otro:

Código :

cat.attachMovie("bot_futbol", "futbol", 1, {_x:100, _y:100});


Lo digo porque uno me lo pone exactamente en su sitio y el otro parece que no esta dentro de ese nivel y lo pone en cualquier sitio.

Gracias de nuevo!

Por 2isone

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Dic 2008 04:57 pm
:O, bueno, no creo que exista un problema, debe pasar exactamente lo mismo usando uno u otro, cuando pasas un objeto de propiedades, el MovieClip que se crea, toma automaticamente las variables del objeto que se paso a la funcion({_x:100, _y:100}) y le da esos valores, por tanto, debe ser exactamente igual el resultado, puedes usar indistintamente el que mas te convenga.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 22 Dic 2008 07:04 pm
No, no lo pone dentro de cat. Parece como si estuviera fuera del _root y me pone el mc en el punto 0, 0.

O eso creo...

Gracias, si tengo mas problemas te comento.

Un saludo!

Por 2isone

19 de clabLevel



 

firefox

 

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