Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: internauta en Abril 10, 2013, 01:21:51 PM

Título: Objetos visibles e invisibles (SOLUCIONADO)
Publicado por: internauta en Abril 10, 2013, 01:21:51 PM
Hola chicos..

Me vengo dado de bruces al intentar poner objetos visibles e invisibles.

Son objetos que tengo colocados en la room. Pero me da igual si los tengo que crear con código...

La idea que quiero hacer es chequear una variable global (para activar o no el sonido) y según sea true o false, que se muestre un objeto u otro. A priori parece un código muy sencillo, pero no me funciona...

if (global.bSonido==true)
  {
    object_set_visible(objOpcionesSonidoOn,true)
    object_set_visible(objOpcionesSonidoOff,false)
  }
else
  {
    object_set_visible(objOpcionesSonidoOn,false)
    object_set_visible(objOpcionesSonidoOff,true)
  }

Al principio lo tenía con menos código, pero desarrollé el IF porque no entendía por qué no funcionaba.
object_set_visible(objOpcionesSonidoOn,global.bSonido);


En fin... Lo tengo puesto en el evento DRAW de un objeto sin sprite que uso como control de la room.

¿Alguna idea?


Si controlo la escala del objeto para hacerla 1 cuando quiero que sea visible y 0 cuando quiero que sea invisible, el resultado es el esperado, pero claro, esto es un parche  :-)


Gracias...
Título: Re:Objetos visibles e invisibles
Publicado por: Wadk en Abril 10, 2013, 04:05:30 PM
Con object_set_visible cambiás la propiedad del objeto. Lo que querés es modificar el valor de la propiedad de las instancias que tenés creadas, simplemente así:
[gml]objOpcionesSonidoOn.visible = global.bSonido;
objOpcionesSonidoOff.visible = !global.bSonido;[/gml]

Por otro lado si los objetos son iguales pero con un sprite distinto, te recomendaría que uses solo un objeto y le cambies el sprite...
En step del propio objeto:
[gml]if (global.bSonido) {
    sprite_index = sprSonidoOn;
} else {
    sprite_index = sprSonidoOff;
}[/gml]

Otra optimización más, si los sprites tienen solo una imagen cada uno, podés ponerlas ambas en un mismo sprite (primero la del sonido desactivado, y después la del sonido activado) y hacer lo siguiente:
[gml]image_single = global.bSonido;[/gml]

Saludos.
Título: Re:Objetos visibles e invisibles
Publicado por: internauta en Abril 10, 2013, 04:20:39 PM
Perfecto, Wadk !!

Muchas gracias. Opté por la solución del medio, cambiar el sprite, porque me parece más legible a la hora de volver dentro de un tiempo a ver el código   :-)


Muchas gracias...