Comunidad de diseño web y desarrollo en internet online

Juego plataformas AS2. No quiero que ítem aparezca de nuevo.

Citar            
MensajeEscrito el 14 Mar 2013 10:29 pm
Hola de nuevo. Sigo haciendo mi juego de plataformas en AS2 y me gustaría que los ítems recogidos no aparecieran más, una vez recogidos, vamos, que cada vez que coja una moneda, desapareciese y ya no volviese a aparecer si vuelvo a la misma fase desde otra fase, o si cierro el swf y lo vuelvo a cargar. Muchas gracias, seguro que alguien sabrá hacerlo.

Por chachon2

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Mar 2013 09:58 am

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Mar 2013 02:26 pm
Muchas gracias, Jorge, sobre todo por contestar tan rápidamente; siento que ya casi lo tengo. Los ítems a recoger están situados directamente en la línea de tiempo. Pero creo que no me he explicado bien. Los ítems sé hacerlos desaparecer, pero lo que realmente me interesa es que NUNCA MÁS vuelvan a aparecer, por ejemplo:
- en el caso de si cojo los ítems, voy a otro frame y vuelvo al mismo frame en donde estaban los ítems.
- o en el caso de que cierre el archivo y lo vuelva a abrir.
Por poner un ejemplo, las monedas grandes de new super mario bros: entras en una fase y coges las 3 monedas grandes existentes en esa fase. Si grabas y vuelves a entrar a la misma fase hay un hueco en donde estaban dichas monedas, pero ya no están. Yo quiero hacer lo mismo, pero que se grabe automáticamente.

Aquí está el archivo con el que estoy testeando esta acción, pero no funciona como yo desearía:

http://img59.xooimage.com/views/e/c/0/ayuda_array-3ca7e62.swf/

y aquí el código (que me sugirió un amigo), basado en arrays:
éste está en el primer frame de la raíz principal:

Código ActionScript :

stop();
var monNVL1_so = SharedObject.getLocal("presentes");

if (monNVL1_so.data.presente == undefined) {
   monNVL1_array = [[1], [1], [1], [1], [1], [1], [1], [1]];
} else monNVL1_array = monNVL1_so.data.unlocked;
for (a=0; a<8; a++) {
   this["monNVL1_"+(a+1)] = monNVL1_array[a][0];
}


Cada moneda tiene como nombre de instancia monNVL_1_1, monNVL_1_2, monNVL_1_3 ...(moneda nivel 1 uno, moneda nivel 1 dos, moneda nivel 1 tres ...).

Y aquí está el código asignado a la moneda 5, por ejemplo:

Código ActionScript :

 onClipEvent (enterFrame) {
      if (_root.bola.hitTest(this)) {
         this.nextFrame();
      }
         if (_root.monNVL1_5 !== 1) this.unloadMovie();
                if (this.hitTest(_root.bola) and _root.monNVL1_5 == 1) _root.monNVL1_5.data.presente = 2;
      }

Por chachon2

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Mar 2013 02:39 pm
Por ahi va la idea. La idea del array es hacer un mapa, supongamos 8 monedas

[[1], [1], [1], [1], [1], [1], [1], [1]];

Las guardas en el SO, como ya estas haciendo, cada vez que termina la pantalla o muere, lo vuelves a guardar, supongamos que tienes

[[1], [1], [1], [1], [1], [0], [0], [0]];

Quiere decir que cogio 3.

El punto es que al situar las monedas, verifiques en el array si existen (1) o no existen (0), y que utilices attachMovie para ponerlas, olvídate de situarlas manualmente authortime, lo que quieres hacer necesita que armes los niveles runtime

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Mar 2013 03:04 pm
o sea, tendría que buscarme la forma para que aparezcan con attachMovie, poniendo previamente en el código cada posición en x e y de cada moneda...¿cierto?

Por chachon2

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Mar 2013 03:11 pm
Exactamente, usualmente los juegos usan mapas, es decir estructuras de datos como las de las monedas pero para niveles enteros.
Si lo que tienes es un plataformero con sidescrolling, tienes frameworks que te lo arman con unos pocos parámetros, por ejemplo Citrus Engine, http://citrusengine.com/

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Mar 2013 03:14 pm
Pues muchas gracias, me pondré a ello.

Por chachon2

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Mar 2013 12:20 am
Le he dado mil vueltas más al código y no hallo resultado positivo. Te he hecho caso y me he puesto a poner las monedas con attachmovie en el escenario. Esta vez puse tan solo 2 monedas, para no hacerme un lío..pero las malditas monedas siguen estando ahí cada vez que cierro el swf y lo abro de nuevo...
Este es el código que le he puesto en el primer frame de la raíz principal:

Código ActionScript :

var monNVL1_so = SharedObject.getLocal("lasMonedas33");
var monNVL1_:Array = [[1], [1]];
var xPos = 275;
var yPos = 55;
for (i = 0; i < monNVL1_.length; i++)
{
   //attacho el clip contenedor
   attachMovie("la_moneda","moneda" + i,i,{_x:xPos, _y:yPos});
   //incremento la posición en y de cada copia de moneda
   yPos += this["moneda" + i]._height + 5;
}


if (monNVL1_so.data.estaPresente == undefined)
{
   monNVL1_ = [[1], [1]];
}
else
{
   monNVL1_ = monNVL1_so.data.estaCogida;
}
for (a = 0; a < monNVL1_.length; a++)
{
   this["moneda" + (a + 1)] = moneda[a][0];
   trace(monNVL1_);
}

onEnterFrame = function ()
{
   if (_root.bola.hitTest(_root.moneda0))
   {
      _root.moneda0.nextFrame();
      _root.monNVL1_so.data.estaPresente = 2;
   }
   if (_root.bola.hitTest(_root.moneda1))
   {
      _root.moneda1.nextFrame();
      _root.monNVL1_so.data.estaPresente = 2;
   }
   
}; 


y el problema seguro que es que lo estoy abordando desde una perspectiva errónea...

Por chachon2

41 de clabLevel



 

chrome

 

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