Crear objeto que pueda tratarse como sprite
Te mando una consulta que intentaré explicarte lo mejor que pueda.
Estoy haciendo una presentación multimedia donde se muestran los datos genealógicos de una familia.
En una de las opciones selecciono una persona en la base de datos y voy localizando y colocando en una lista de propiedades sus correspondientes antepasados hasta el final.
Una vez tenido esto, clasifico de forma ascendente por año y quiero mostrar sucesivamente encima de una mapa cada una de las localidades donde, en el año en curso, exista algún antepasado y por supuesto desaparezca esta localidad una vez quede sin antepasados.
Una posible solución sería colocar en la línea de tiempos un "sprite" por cada una de las localidades que tenga y usar los eventos específicos del "mouse" para mostrar en una pantalla anexa información complementaria del "sprite" interesado, como por ejemplo:"que localidades" "que antepasados están en ese momento", etc.
Sin embargo, esta solución más simple no me interesa puesto que quisiera que la presentación pudiera valer para otras familias genealógicas y no colocar cada vez nuevos "sprites" a mano.
Se me ocurrió utilizar el comando "image" y dibujar un círculo de color amarillo sobre un mapa que está de fondo, cada vez que una localidad dispone de antepasados, pero me surgen problemas que no se solucionar, como por ejemplo: "como borrar ese círculo sin que afecte al mapa sobre el que lo he dibujado (no se puede hacer transparente el círculo, puesto que no es un "sprite") y esto nos lleva a otro problema.
No puedo preguntar si el ratón está encima de un punto, puesto que no es un "sprite". Este último problema- el saber si está sobre una coordenada donde hay un circulo amarillo - lo puedo solucionar preguntando por la coordenada en la que estoy en cada momento y si esa coordenada coincide con las coordenadas que deben estar activas en un momento determinado que previamente he guardado en una lista de propiedades. En fin, un verdadero rollo.
He intentado hacerlo con Programación Orientada a Objetos- idea que se me ocurrió viendo alguna de tus respuestas- y creo que sería la solución más acertada, sin embargo, no consigo dar con ello. Entiendo que las fases serían las siguientes:
1-Crear un objeto padre mínimo con la forma de un círculo amarillo. (¿Cómo se crea el círculo para no recurrir a un mapa de bits con esa figura?)
2- Crear dos propiedades que correspondan a las coordenadas por é y.
3- Leer la lista de propiedades donde he guardado los años y las localidades que deben estar activadas en cada año.
Por cada elemento de la lista añadir un nuevo objeto hijo con sus coordenadas correspondientes en otra lista de propiedades.
4- Cuando termine de leer la lista de propiedades donde están los años y las localidades activadas vuelvo a leer ahora la lista de propiedades donde se indican cada uno de los objetos hijos que he creado y en que coordenadas se deben ubicar.
En este último punto tengo problemas porque no puedo preguntar por un elemento de la lista como si fuera un "sprite" al modo de "sprite(1).loc=point(x, y), para posicionarlo en el escenario.
Lo único que he conseguido hacer es "sprite(1).loc=point(x, y)" donde "sprite(1) corresponde a un mapa de bit que representa un circulo amarillo, y claro, el círculo se va dibujando cada vez en una coordenada diferente pero porque es el mismo objeto.
Espero que hayas entendido algo y me puedas aclarar que código sería necesario para resolver la duda.
Estoy haciendo una presentación multimedia donde se muestran los datos genealógicos de una familia.
En una de las opciones selecciono una persona en la base de datos y voy localizando y colocando en una lista de propiedades sus correspondientes antepasados hasta el final.
Una vez tenido esto, clasifico de forma ascendente por año y quiero mostrar sucesivamente encima de una mapa cada una de las localidades donde, en el año en curso, exista algún antepasado y por supuesto desaparezca esta localidad una vez quede sin antepasados.
Una posible solución sería colocar en la línea de tiempos un "sprite" por cada una de las localidades que tenga y usar los eventos específicos del "mouse" para mostrar en una pantalla anexa información complementaria del "sprite" interesado, como por ejemplo:"que localidades" "que antepasados están en ese momento", etc.
Sin embargo, esta solución más simple no me interesa puesto que quisiera que la presentación pudiera valer para otras familias genealógicas y no colocar cada vez nuevos "sprites" a mano.
Se me ocurrió utilizar el comando "image" y dibujar un círculo de color amarillo sobre un mapa que está de fondo, cada vez que una localidad dispone de antepasados, pero me surgen problemas que no se solucionar, como por ejemplo: "como borrar ese círculo sin que afecte al mapa sobre el que lo he dibujado (no se puede hacer transparente el círculo, puesto que no es un "sprite") y esto nos lleva a otro problema.
No puedo preguntar si el ratón está encima de un punto, puesto que no es un "sprite". Este último problema- el saber si está sobre una coordenada donde hay un circulo amarillo - lo puedo solucionar preguntando por la coordenada en la que estoy en cada momento y si esa coordenada coincide con las coordenadas que deben estar activas en un momento determinado que previamente he guardado en una lista de propiedades. En fin, un verdadero rollo.
He intentado hacerlo con Programación Orientada a Objetos- idea que se me ocurrió viendo alguna de tus respuestas- y creo que sería la solución más acertada, sin embargo, no consigo dar con ello. Entiendo que las fases serían las siguientes:
1-Crear un objeto padre mínimo con la forma de un círculo amarillo. (¿Cómo se crea el círculo para no recurrir a un mapa de bits con esa figura?)
2- Crear dos propiedades que correspondan a las coordenadas por é y.
3- Leer la lista de propiedades donde he guardado los años y las localidades que deben estar activadas en cada año.
Por cada elemento de la lista añadir un nuevo objeto hijo con sus coordenadas correspondientes en otra lista de propiedades.
4- Cuando termine de leer la lista de propiedades donde están los años y las localidades activadas vuelvo a leer ahora la lista de propiedades donde se indican cada uno de los objetos hijos que he creado y en que coordenadas se deben ubicar.
En este último punto tengo problemas porque no puedo preguntar por un elemento de la lista como si fuera un "sprite" al modo de "sprite(1).loc=point(x, y), para posicionarlo en el escenario.
Lo único que he conseguido hacer es "sprite(1).loc=point(x, y)" donde "sprite(1) corresponde a un mapa de bit que representa un circulo amarillo, y claro, el círculo se va dibujando cada vez en una coordenada diferente pero porque es el mismo objeto.
Espero que hayas entendido algo y me puedas aclarar que código sería necesario para resolver la duda.
3 Respuestas
Respuesta de bedelludrica
1
Respuesta de jack smith
Respuesta de Cris Porper