Comunidad de diseño web y desarrollo en internet online

¿Cómo acceder a un clip que está en el frame 10?

Citar            
MensajeEscrito el 08 Sep 2008 03:14 pm
Tengo 2 clips:
clip1_mc ---> Clip principal.
clip2_mc ---> Clip dentro del principal pero en el frame 10.

Si hago:
clip1_mc.gotoAndStop(10); ---> perfecto.

Pero cuando hago referencia al clip2 me da error como que no encuentra ese clip:
clip1_mc.gotoAndStop(10);
clip1_mc.clip2_mc.alpha = 0.5; //ERROR

¿Alguien sabe el por qué y como puedo acceder a las propiedades de este objeto desde el clip1?

He realizado una prueba.fla del problema que tengo:
http://www.savefile.com/files/1775866

S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Sep 2008 04:56 pm
Veo que estás utilizando "alpha" en vez de "_alpha", así que parece ser que estás trabajando con AS3, si esto es cierto entiendo la causa de tu problema.

AS3 es bastante más rápido que AS2, esta instrucción en AS2 no te debería dar problemas, porque cuando aplicaras el alpha ya el movieClip estaba en el frame 10, pero con AS3 el movieClip va a dirigirse al frame 10 y ya flash ejecutó la instrucción del alpha, para lograr lo que quieres debes atrasar la instrucción del alpha cualquier cantidad de tiempo, por ejemplo un millisegundo:

Código ActionScript :

clip1_mc.gotoAndStop(10);

var myTime:Timer = new Timer(1, 1);

myTime.addEventListener(TimerEvent.TIMER, changeAlpha);

function changeAlpha(evt:TimerEvent):void{
   
   clip1_mc.clip2_mc.alpha = 0.5;
   
}

myTime.start();


Todo este trabajo para realizar esta cosa tan simple, pues si, porque esta forma de trabajar es antigua, AS3 está pensada para que trabajes con clases, si deseas trabajar AS3 con el código desparramado por los frames, presentarás disímiles problemas y te puedo asegurar que este será el menor de ellos.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 Sep 2008 05:12 pm
He revisado tu archivo .fla. para comezar dentro de tu clip1_mc, separa tus objetos en capas diferentes, tienes 2 objectos:

1. Forma : Cuadrado Cyan,
2. MovieClip : clip2_mc

Separalos en 2 capas diferentes, eso par emprezar,

Segundo no puedes llamar via ActionScript (AS2) a una instacia que aun no existe en el mismo frame en que la invocas, es decir, tu codigo AS2 invoca a clip2_mc estando en frame 1 de clip1_mc, sin embargo en dicho frame clip2_mc aun no existe, una vez hallas separado tus objetos en 2 capas diferentes, haz que clip2_mc, exista desde el frame 1 de clip1_mc, si no quieres que se vea establece su propiedad _alpha en 0 ya sea via AS2 o directametne desde propiedades, y restablece su propiedad _alpha a 100 en tu frame 10.

Sin embargo para manejar el alpha de clip2_mc no es necesario mas que un unico frame en clip1_mc con la siguiente configuracion:

Dentro del clip1_mc
Capa 1 : Forma
Capa 2 : clip2_mc
Capa 3 : AS2

*En tu AS2:Frame 1 debes de poner

Código :

clip2_mc._alpha = 0;
stop();


Dentro de tu linea principal de tiempo:
Capa 1 : clip1_mc
Capa 2 : AS2

*En tu AS2:Frame 1 (de tu linea de tiempo principal) debes de poner

Código :

clip1_mc.onRelease = function(){
clip1_mc.clip2_mc._alpha = 50;
}
stop();


lo pongo dentro de un funcion si lo quieres poner como boton pero si lo quieres manejar directamente pon:

Código :

clip1_mc.clip2_mc._alpha = 50;
stop();


Espero te sirva, y no olvides de dar nombre a los clips.

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

firefox
Citar            
MensajeEscrito el 08 Sep 2008 05:29 pm
Gracias elchininet por la explicación, voy a probar lo que comentas.

Respecto a mi forma de trabajar con AS3:
- Trabajo desde FlashDevelop, tengo todo el código en una clase principal.
- Utilizo Flash CS3 para crearme una biblioteca de clips de película.
- En estos clips no meto código por las razones que comentas.

Llevo poco tiempo con AS3 y he probado varias formas de trabajar. Esta que he comentado me va bien aunque me ha dado, de momento, este único problema. Si se puede mejorar no dudo en cambiar.

Lo dicho, voy a probar lo que has comentado y te cuento.

S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Sep 2008 05:49 pm
Bien, muchas gracias a ambos.
La conclusión que extraigo es:
Lo que trato de hacer no se puede hacer.

Digamos que no puedo llamar a un clip anidado a menos que este (el anidado) se encuentre en el frame 1.
Por cierto elchininet esto que comentas es lo que primero me pasó por la cabeza:
"AS3 es bastante más rápido que AS2, esta instrucción en AS2 no te debería dar problemas, porque cuando aplicaras el alpha ya el movieClip estaba en el frame 10, pero con AS3 el movieClip va a dirigirse al frame 10 y ya flash ejecutó la instrucción del alpha"
Por ello ¿no debería funcionar esto?:
clip1_mc.gotoAndStop(10);
if(clip1_mc.currentFrame == 10)
{
clip1_mc.clip2_mc.alpha = 0.5;
}

Pues tampoco funciona :-/. Por ello concluyo que no se puede hacer, vamos. Nuevamente muchas gracias por vuestro tiempo y explicaciones, de verdad.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Sep 2008 05:52 pm
Joroba, ¡esta si que es buena!. Esto si funciona:
clip1_mc.gotoAndStop(10);
if(clip1_mc.currentFrame < 10)
{
clip1_mc.clip2_mc.alpha = 0.5;
}

Lo que he hecho es cambiar:
currentFrame == 10
Por:
currentFrame < 10

Me lo expliquen.


S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Sep 2008 07:56 pm
Por las dudas, he descargado tu archivo flash, esto último que has posteado claro que no da error, pero no cambia el alpha del movieClip.

El ejemplo que postee anteriormente lo he copiado y pegado en el primer frame de tu flash y si funciona.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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