7 Replies Latest reply on Sep 13, 2017 1:13 PM by yerayd

    Juego de plataformas AS3. Coleccionables, Arrays y grabado de datos.

    yerayd Level 1

      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:

      Código ActionScript :

                      //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:

      Código ActionScript :

                      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:

      Código ActionScript :

                       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. Espero que no sea un lío, gracias.