Comunidad de diseño web y desarrollo en internet online

Comunicar dos mcs importados de la biblioteca

Citar            
MensajeEscrito el 27 Abr 2011 10:57 am
Hola, tengo dos mcs que traigo de la biblioteca al escenario. En uno de ellos tengo un botón b1 que al hacer click, quiero que mande el otro mc a un fotograma específico. Lo estoy intentando de esta manera.

En el primer fotograma del mc que traigo de la bilbioteca tengo un botón y este código:


Código ActionScript :

b1.addEventListener(MouseEvent.CLICK, b1Handler); 
function b1Handler(event:MouseEvent):void{ 
   stage.mc2.gotoAndPlay(2); 
   }




y me sale este error:


escribió:

1119: Acceso a una propiedad mc2 posiblemente no definida mediante una referencia con tipo estático flash.display:Stage.


¿como puedo mandar el mc2 al segundo fotograma desde el botón b1 de mc1?

gracias

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Abr 2011 11:09 am
Horrible esto! :D

Antes que nada, te aconsejo leer el curso de OOP. Ahi se habla de encapsulacion y sobre event listeners.

Regla numero uno:
- Un objeto que es parte de algo no debe saber nada sobre el otro y mucho menos controlarlo.

Entonces, si ambos objetos pertenecen a 'stage' (porque stage!) pues cada objeto se puede 'comunicar' con stage, eso esta bien.

Código ActionScript :

b1.addEventListener(MouseEvent.CLICK, b1Handler);  
function b1Handler(event : MouseEvent) : void
{  
   //soy stage y he escuchado lo que mi hijo me ha dicho  
}

Luego, stage se puede comunicar con cada hijo, entonces te recomiendo que stage dispare un evento informando que algo ha sucedido, en este caso, b1 ha sido presionado.
El mc2 esta esperando a que dicho evento suceda (con un listener), cuando esto sucede, entonces hace lo que debe hacer (ir al fotograma 2).

Escribe el codigo!

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 27 Abr 2011 11:23 am
:shock:

No te he entendido

:oops:

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Abr 2011 03:26 pm
Mi idea era que en el objeto uno disparases un evento que seria escuchado por la pelicula madre y esta dispararia un evento informandole al objeto dos.

Quiza la info que nos has dado no es suficiente porque no se a que hora has agregado tus objetos a tu pelicula (y si los has agregado al stage o no).
Prueba con esto:

Código ActionScript :

function b1Handler(event:MouseEvent):void{ 
   mc2.gotoAndPlay(2); 
}

si no funciona, muestranos mas codigo, incuyendo el codigo donde agregas cada objeto a tu pelicula.

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 29 Abr 2011 12:43 pm
He probado lo siguiente.

En la liena de tiempo principal he puesto esta función:

Código ActionScript :

function cambiaFrame(Event:MouseEvent):void
{
mc2.gotoAndPlay(2);   
 trace("AS3 es una p... m..... ");
}


Y en la liena de tiempo donde tengo mi botón he puesto:

Código ActionScript :

b1.addEventListener(MouseEvent.CLICK, b1Handler);
function b1Handler(event:MouseEvent):void{
   mcContenedor(parent).cambiaFrame();
    }


Al compilar ya no me da fallos pero cuando hago click en el botón me lanza lo siguiente en la ventana de salida:

escribió:


TypeError: Error #1034: Error de conversión forzada: no se puede convertir Main@2f5a30e1 en mcContenedor.
at mcContenedor/b1Handler()

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Abr 2011 07:35 pm
Estas haciendo un Casteo incorrecto.
Parent apunta al padre y según el error es la escena principal de la película.

Por t2k

32 de clabLevel



Genero:Masculino  

monkey island

chrome
Citar            
MensajeEscrito el 29 Abr 2011 10:27 pm
La linea del tiempo no se usa para escribir acciones desde el 2003 que salio AS2 (si, en AS2 ya habian clases...).
No sabemos donde existe b1 y mucho menos su referencia a mcContenedor.
Lo que has hecho se llama 'spaghetti code' y en ese caso puede que te funcione:

Código ActionScript :

parent.cambiaFrame();

o

Código ActionScript :

mcContenedor.cambiaFrame(); 


horrible! y no funcionara porque cambiaFrame espera un evento como parametro...
A estudiar! que eso de 'copy-paste' no funciona!

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 03 May 2011 04:34 pm
Ah! tengo que aprender POO para mandar hacer un gotoAndPlay a un MovieClip en AS3!
:twisted:

Que guay! como mola! me encanta! :roll:

Gracias Adobe por mandar a los diseñadores a "T....P..C...".

Lo dejo por imposible.

Gracias.

Por plug

78 de clabLevel



Genero:Masculino  

firefox

 

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