-
Frame = cabeza+cuerpo+piernas como?
el esquema basico de fenix es tener un "proccess", con sus frames, e ir modificando la variable "graph=1 graph=2" para ir animando.
Pero que ocurre si cada frame esta formado por dos trozos de imagen vease (frame1 = piernas1+cabeza1+cuerpo1)
si dibujo todas las combinaciones de piernas,brazos y cabezas pues seria muy facil, eso si tendria que tener todas las combinaciones dibujadas.
Como se hace eso en Fenix? lo de que cada frame se compone de dos trozos.
Yo en C/C++ simplemente me haria una funcion dibujaframe() que internamente pinta los dos trozos a la vez, pero en Fenix ando perdido
Aiken
-
-
Bueno, hay varias formas. Para hacerlo como tu dices necesitarias crear un gráfico nuevo sobre el que dibujar (new_map), porque supongo que no querras hacerlo sobre el fondo) y luego pintar sobre el. Existen funciones como map_put, map_xput... que pintan un grafico cargado sobre otro, pero está limitado a que tanto gráfico origen como destino esten en la misma librería, algo facil de hacer si haces "map_clone" sobre los gráficos del fpg cargado. Tambien existe una funcion "map_xnput", creo que era, que elimina esa restriccion, no se si en la ayuda online o en el wiki de Fenixworld está documentada, pero buscando por el foro de Fenix seguro que hayas respuesta. Y acuerdate despues de cada frame, antes de redibujar, limpiar el gráfico (map_clear)
Pero lo suyo es que utilices un proceso por cada "miembro" movil. Cada proceso puede manejar un gráfico, así que ya sabes, solo tienes que poner cada brazo y pierna en un proceso, cambiar la variable local angle para que giren y las variables "x" e "y" para que sigan al cuerpo.
Cuando creas un proceso, este devuelve un int, que es su id (o numero de identificacion), si lo guardas en una variable y se lo pasas a un proceso "brazo", podrás averiguar su posicion a cada frame. Ejemplo:
process brazo (int id_cuerpo)
begin
z=-1; //lo ponemos más cerca que el cuerpo
loop
x=id_cuerpo.x;
y=id_cuerpo.y;
frame;
end
end
Este proceso seguirá siempre al proceso que le pases como parámetro, colocandose en su centro (o donde este su punto de control cero). Si quieres que esté más hacia la derecha, sumale algo a la x que obtengas.
Tambien puedes hacerlo usando "puntos de control" con "get_point" o "get_real_point". Eso ya es mejor que busques en la ayuda o te pases por el foro de Fenix para algo más en profundidad, porque es bastante largo para explicarlo del tiron
Espero que te sirva de ayuda.
Última edición por Drumpi; 22/08/2007 a las 02:07
Razón: Edición automática anti doble-post.
-
-
Última edición por Aiken; 22/08/2007 a las 12:22
Razón: Edición automática anti doble-post.
-
Permisos de publicación
- No puedes crear nuevos temas
- No puedes responder temas
- No puedes subir archivos adjuntos
- No puedes editar tus mensajes
-
Reglas del foro
Marcadores