Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: bygdle en Diciembre 11, 2015, 08:35:35 AM

Título: [Resuelto]Preguntas sobre los Parents
Publicado por: bygdle en Diciembre 11, 2015, 08:35:35 AM
Primero que todo, busqué en el manual, pero no encontré mucha información sobre ellos... :-[
Pensarán que soy increíblemente noob por preguntar esto. Pero jamás he usado un parent, porque no sé cómo funcionan ni tampoco los he necesitado. Pero quisiera conocerlos y aprenderlos a usar por si acaso XD
Bien, he oído que los parents comparten sus propiedades con sus hijos, pero quisiera saber qué clase de propiedades comparten, qué eventos, qué códigos, etc.
Gracias de antecabeza...xD
[spoiler]Tú, sí, tú, quien responderá mi pregunta... estás diciendo en este momento:
"Demasiadas preguntas a la vez, bombardea mi mente, ahhh!!!!!!!!!!!"
xD[/spoiler]
Título: Re:Preguntas sobre los Parents
Publicado por: penumbra en Diciembre 11, 2015, 09:56:26 AM
Bueno, los parents se pueden usar para muchas cosas, pero yo prefiero usarlos casi únicamente para controlar/agrupar colisiones. Ejemplo: tengo 20 enemigos distintos en mi juego, no necesito agregar 20 eventos de colisión distintos en el objeto espada para restarles vida, porque puedo agrupar a los 20 enemigos bajo un solo parent y usar nada más un evento de colisión en el objeto espada (vs el parent). Lo mejor de esto es que a pesar de tener un solo evento, como el padre no tiene sprite, se toma en cuenta la máscara de cada hijo.

Un parent puede compartir casi cualquier cosa con el hijo. Si el parent tiene un evento alarma...
a) Si el hijo NO tiene un evento alarma, de todas maneras ejecutará un evento alarma idéntico al del padre, por ser hijo (hijo bueno)
b) Si el hijo SÍ tiene un evento de alarma propio, YA NO ejecutará el evento de alarma del padre (hijo desobediente y malo)

Dicen las malas lenguas que es posible hacer que el hijo, aunque tenga eventos propios, ejecute de todas maneras eventos del padre, mediante cierta función que supuestamente está documentada en el sacrosanto manual de GM:S. Dicen...  :-[

Y bueno, para usar parents, sólo hay que crear un objeto (generalmente sin sprite) y luego, en los objetos hijos, elegir el objeto parent del menú desplegable.

Título: Re:Preguntas sobre los Parents
Publicado por: bygdle en Diciembre 11, 2015, 10:05:34 AM
Gracias por la explicación, penumbra
Segun lo que te entendí. Si creo X objetos agrupados con un parent. Digamos que tenemos un evento step en el parent. ¿Cada hijo ejecuta su step y el del parent? ¿o lo ejecuta sólo si no tiene evento step propio?

PD:
Cita de: penumbra en Diciembre 11, 2015, 09:56:26 AM
Dicen las malas lenguas que es posible hacer que el hijo, aunque tenga eventos propios, ejecute de todas maneras eventos del padre, mediante cierta función que supuestamente está documentada en el sacrosanto manual de GM:S. Dicen...  :-[
Ya, en serio. Te has vuelto muy troll....xD
Título: Re:Preguntas sobre los Parents
Publicado por: fega en Diciembre 11, 2015, 12:53:43 PM
que tal eres para el ingles?

aquí hay un libro EXCELENTE, de un lenguaje de programación EXCELENTE.

que explica esas cosas sobre la herencia en general...
el texto va de otro lenguaje, pero me parece muy claro.

http://natureofcode.com/book/chapter-4-particle-systems/  (http://natureofcode.com/book/chapter-4-particle-systems/)

capítulo 4.7
Título: Re:Preguntas sobre los Parents
Publicado por: bygdle en Diciembre 11, 2015, 01:39:27 PM
No encuentro conveniente aprender acerca de "la herencia" en un lenguaje que no es GML, ya que en el otro lenguaje no hay eventos, que es una de las cosas que más me interesan saber ;)
Título: Re:Preguntas sobre los Parents
Publicado por: Guacusio en Diciembre 11, 2015, 01:48:45 PM
Cita de: NiuWeb en Diciembre 11, 2015, 10:05:34 AM
Gracias por la explicación, penumbra
Segun lo que te entendí. Si creo X objetos agrupados con un parent. Digamos que tenemos un evento step en el parent. ¿Cada hijo ejecuta su step y el del parent? ¿o lo ejecuta sólo si no tiene evento step propio?

PD:
Cita de: penumbra en Diciembre 11, 2015, 09:56:26 AM
Dicen las malas lenguas que es posible hacer que el hijo, aunque tenga eventos propios, ejecute de todas maneras eventos del padre, mediante cierta función que supuestamente está documentada en el sacrosanto manual de GM:S. Dicen...  :-[
Ya, en serio. Te has vuelto muy troll....xD

Tu segunda pregunta contesta a la primera. Penumbra te lo indicó: los eventos de los hijos sobreescriben a los del padre y cuando sólo el padre tiene el evento, el hijo lo hereda como si también lo tuviera.

La herencia tiene muchos usos, además de ahorrar código en colisiones. De hecho, si un hijo no tiene eventos, para todos los efectos se comporta como una instancia del padre con la salvedad de que su object_index es distinto y sus variables intrínsecas (sprite_index, depth, visible, etc.) tienen sus propios valores. Esta propiedad permite, por ejemplo, hacer operaciones utilizando with con el padre que serán realizadas también con los hijos, asignar el valor de una variable al parent que será transmitida a los hijos, o en general ejecutar cualquier código sobre el padre y así ejecutarlo también automáticamente en los hijos.

La función a la que penumbra se refiere en forma misteriosa y que sirve para llamar al evento del padre es event_inherited. Con ella puedes ejecutar adicionalmente el evento del padre incluso si el hijo tiene el suyo propio.
Título: Re:Preguntas sobre los Parents
Publicado por: bygdle en Diciembre 11, 2015, 01:58:21 PM
Bien, eso es lo que quería :D
Gracias, Guacusio :D :D :D :D :D :D :D :D :D :D
RESUELTO
Título: Re:[Resuelto]Preguntas sobre los Parents
Publicado por: fega en Diciembre 11, 2015, 07:13:51 PM
Que no hayan eventos no quiere decir que no puedas aprender la herencia.

Los principios son los mismos tanto para GML, como processing  y cualquier otro lenguaje que permita esta caracteristica. conocerlo desde un punto de vista general (como ofrece el libro) puede llegar a darte grandes ventajas si algun dia te ves obligado a mudar de lenguaje.