User Tag List

Resultados 1 al 3 de 3

Tema: Frame = cabeza+cuerpo+piernas como?

  1. #1

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,932
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2

    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

  2. #2

    Fecha de ingreso
    Sep 2005
    Mensajes
    11,176
    Mencionado
    155 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    212
    Agradecer Thanks Received 
    486
    Thanked in
    Agradecido 335 veces en [ARG:2 UNDEFINED] posts
    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 03:07 Razón: Edición automática anti doble-post.

  3. #3

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,932
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    Drumpi eres un monstruo.
    Con toda tu ayuda ya me has dado entretenimiento para unos dias

    Ya son dos post mios que lees y solucionas, graaaacias
    Espero no daros mucho mas la coña

    Aiken
    < - >
    pregunta: no se podria sobrecargar/sobreescribir la funcion frame de un proceso para que en lugar de hacer lo tipico haga otra cosa? quizas pienso demasiado en c++


    voy a mirar la primera opcion porque la segunda opcion la de crear un proceso me parece demasiado crear un proceso para cada brazo. Conceptualmente los "objetos" mas pequeños que tengo son los muñecos, crear proceso para los brazos es mucho bajar en el diseño. ademas tener brazos y piernas "concurrentes" me da un poco yuyu jeje

    Aiken
    Última edición por Aiken; 22/08/2007 a las 13: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
  •