Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: clloses en Junio 06, 2013, 02:34:49 PM

Título: Asignar propiedades a objetos de un vector
Publicado por: clloses en Junio 06, 2013, 02:34:49 PM
Hola, en mi aprendizaje de la sintaxis de GM me he encontrado con otro problema:

Resulta que pretendo hacer un vector (vectorCajas) de instancias de objetos (obj_caja) y quiero darle a cada objeto del vector una propiedad "tipoCaja" y he hecho el código tal que así:



// Creo un vector con los tipos de caja que puedo tener
{
tipo[0]="grande"
tipo[1]="mediana"
tipo[2]="pequeña"
}

//Creo hasta 3 obj_caja y los guardo en el vectorCajas[i]
for (i = 0; i < 3; i += 1)
{
vectorCajas[i] = instance_create(x + (i*50),y,obj_caja);
//Aquí es donde pretendo darle un tipo a cada caja
vectorCajas[i].tipoCaja = tipo[i];
//Aquí pretendo mostrar el resultado en un show_message()
show_message(string(vectorCajas[i].tipoCaja);
}


Pero el caso es que el show_message() me peta y no estoy seguro de estar guardando bien los tipos de caja en cada objeto del vector :/ ¿Es un problema de hacer mal el show_message() o es que no estoy guardando bien los tipos? ¿Hay alguna otra forma de comprobarlo?

¡Muchas gracias!
Título: Re:Asignar propiedades a objetos de un vector
Publicado por: clloses en Junio 06, 2013, 06:27:27 PM
Arg!, Me está volviendo loco el tema, dicho de otro modo más sencillo:

¿Cómo pongo dinámicamente, 3 instancias de objeto en pantalla y que cada una tenga una propiedad "nombre" diferente?

¿De verdad que tengo que crear 3 objetos diferentes desde la interficie o es que no tengo ni pajolera de cómo hacerlo des de código?

Gracias de antemano por cualquier ayuda.
Título: Re:Asignar propiedades a objetos de un vector
Publicado por: brunoxzx en Junio 07, 2013, 12:19:25 AM
Pues lo único que tiene mal el código es que al show message le hace falta un parentecis.

Cita de: clloses en Junio 06, 2013, 06:27:27 PM
¿Cómo pongo dinámicamente, 3 instancias de objeto en pantalla y que cada una tenga una propiedad "nombre" diferente?
Tal como lo estás haciendo usando un "." para acceder a las variables locales de una instancia en especifico.

También puedes usar la construcción "with". Se usa de esté modo.
[gml]with(vectorCajas){
     Nombre="juan";
     Tipo=wololo;
}[/gml]

Si usas el with con el nombre de un objeto y no con una instancia en especifico se hará un loop entre todas las instancias del objeto pasado. Ejemplo.
[gml]with( obj_caja ){
     Nombre="juan";
     //¡Todas las instancias de obj_caja nos llamamos juan!
     Tipo=wololo;
}[/gml]
Título: Re:Asignar propiedades a objetos de un vector
Publicado por: clloses en Junio 07, 2013, 02:33:33 PM
Arg, muchas gracias brunoxzx. La verdad es que al final desesperé y acabé creando 3 objetos (caja1, caja2, caja3) en la libreria y los metí en la room con room_instance_add(nombre_room, posx, posy, object_get_index(obj)).

Pero como sigue pareciéndome más limipio hacer 3 instancias de un mismo objeto, probaré lo que me recomiendas a ver si tengo éxito.

Ahora mismo el problema lo tengo en no detectar bien a qué caja le estoy haciendo un drop de otro objeto con el ratón.

Empiezo a pensar que aun no he entendido bien en qué eventos (y de qué objetos) tengo que añadir mis Execution_code :P

¡Gracias por la ayuda igualmente!