Juego Plataformas AS3. Collectables, Arrays y Grabado.
Publicado por Yas (1 intervención) el 12/09/2017 20:33:06
Buenas, estoy haciendo un prototipo para recoger monedas, desaparezcan y que sólo se grabe si toco con el personaje el MovieClip de grabar. Quiero decir, que si toco ese mc, al cerrar el swf y volverlo a abrir, la moneda no debería volver a aparecer.
Llevo muchos días buscando archivos viejos de As2 para convertirlos a As3, pero ha llegado el momento de pedir ayuda. Necesito si alguien me da una estructura y yo seguirla. Hasta ahora lo que tengo es esto:
En la Clase principal:
En la función constructora:
Y dentro de la función con listener ENTER_FRAME:
El problema que tengo con este código que he hecho es que después de coger una moneda y tocar elGrabador para grabarla, si cierro el programa y vuelvo a tocar cualquiera de las 2 monedas restantes, cierro sin volver a tocar elGrabador y vuelvo a abrir el swf, esas monedas no grabadas ya no aparecen.
Aquí está el archivo para probarlo:
http://www.fastswf.com/HxiQ-Vw
Espero que no sea un lío, muchas gracias de antemano,
Yas
Llevo muchos días buscando archivos viejos de As2 para convertirlos a As3, pero ha llegado el momento de pedir ayuda. Necesito si alguien me da una estructura y yo seguirla. Hasta ahora lo que tengo es esto:
En la Clase principal:
1
2
3
4
5
6
7
8
9
10
//ARRAYS
var moneda:Array = new Array();
var miArray1:Array = [1,1,1];
var monedasArray1:Array = [];
var posicionMonedasx:Array = [131.25,232.3,309.25];
var posicionMonedasy:Array = [138.9,138.9,138.9];
//VARIABLES
var tamañoMonedasArray1;
var a;
En la función constructora:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (miSO.data.miArray1Grabado != null)
{
miArray1 = miSO.data.miArray1Grabado;
}
var i = 0;
while (i < miArray1.length)
{
moneda[i] = new Moneda();
moneda[i].x = posicionMonedasx[i];
moneda[i].y = posicionMonedasy[i];
var monedaPusheada = addChild(moneda[i]);
monedasArray1.push(monedaPusheada);
++i;
}
Y dentro de la función con listener ENTER_FRAME:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
tamañoMonedasArray1 = monedasArray1.length;
a = 0;
while (a < tamañoMonedasArray1)
{
var monedaDentroArray = monedasArray1[a];
if (monedasArray1[a] != null)
{
if (miArray1[a] == 0)
{
monedaDentroArray.gotoAndStop(2);
//(No me deja hacer un removeChild, no se por qué).
}
if (protagonista.hitTestObject(monedaDentroArray))
{
miArray1[a] = 0;
monedasArray1[a] = null;
monedaDentroArray.gotoAndStop(2);
}
}
++a;
}
if (protagonista.hitTestObject(elGrabador))
{
miSO.data.miArray1Grabado = miArray1;
miSO.flush();
}
El problema que tengo con este código que he hecho es que después de coger una moneda y tocar elGrabador para grabarla, si cierro el programa y vuelvo a tocar cualquiera de las 2 monedas restantes, cierro sin volver a tocar elGrabador y vuelvo a abrir el swf, esas monedas no grabadas ya no aparecen.
Aquí está el archivo para probarlo:
http://www.fastswf.com/HxiQ-Vw
Espero que no sea un lío, muchas gracias de antemano,
Yas
Valora esta pregunta
0