Comunidad de diseño web y desarrollo en internet online

Pasar variables entre SWF

Citar            
MensajeEscrito el 18 Dic 2012 01:59 pm
Hola,

estoy tratando de hacer un juego en el que hay un SWF que es el menú principal y otros SWF que son los niveles... y quisiera que estos niveles le devolvieran la puntuación que ha conseguido el jugador al menú principal para cargarlo en una BBDD. De hecho, la idea es que el nivel, una vez acabado tenga un botón "Volver al menú principal".

Cargo los niveles, clicando un botón, de la siguiente manera:

function nivel1 ($event: MouseEvent):void
{
var cargador = new Loader();
cargador.load(new URLRequest("nivel1.swf"));
addChild (cargador);
}

bNivel1.addEventListener (MouseEvent.CLICK, nivel1);

Cómo puedo hacerlo?

En cuanto al botón "Volver al menú principal", tendría que hacer otro load o el SWF inicial sigue vivo y puedo matar el hijo??

Gracias y un saludo,

Por anzoni

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Dic 2012 03:35 pm
El nivel principal se llama root, si quieres invocar una funcion en el nivel principal puedes hacer

root.sumaPuntos(100)

En la línea de tiempo principal escribes la función sumaPuntos para que agregue el puntaje al general

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Dic 2012 07:31 am
Pues eso es lo primero que probé, pero al crear el swf del child me da el siguiente error:

"Llamada a un método score posiblemente no definido mediante una referencia con tipo estático flash.display:DisplayObject"

qué estoy haciendo mal? se supone que debo crear los swf por separado y luego ya llamará el uno al otro, no? o hay alguna otra forma?

gracias

Por anzoni

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Dic 2012 08:57 am
Hay que hacerle un cast

MovieClip(root).sumaPuntos(100)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Ene 2013 11:04 am
Hola,

Cuando dices "En la línea de tiempo principal escribes la función sumaPuntos para que agregue el puntaje al general" entiendo que es tan simple como añadir la siguiente función en main.swf:

var pTotal = new Number();
pTotal = 0;
function sumaPuntos(a:Number){

pTotal = pTotal + a;
}

y en nivel1.swf:
MovieClip(root).sumaPuntos(100)

tal como me indicabas, pero me devuelve el siguiente error:

TypeError: Error #1006: sumaPuntos is not a function.
????

A parte, en cuanto al concepto de Loader... para volver al menú principal main.swf (el root) desde nivel1.swf, debería crear otro Loader() y volver a cargar main.swf o main.swf sigue vivo? y es este quien debe enviar un removeChild()? siendo así, en qué momento debo decirle a main.swf que haga el removeChild() y cómo?

gracias

Por anzoni

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Ene 2013 08:53 pm
Lo mas sencillo seria usar eventos personalizados....
http://www.yporqueno.es/blog/dispatchevent-en-as3
http://www.cristalab.com/tutoriales/crear-eventos-personalizados-en-actionscript-3-c64519l/


puedes agregar un listener al loader del evento personalizado en la pelicula principal y luego desde nivel1.swf disparas el evento para que la pelicula principal lo reciba y ejecute lo que necesites.

Por julianpena

98 de clabLevel

1 tutorial

Genero:Masculino  

Diseñador Grafico

chrome

 

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