mover la segunda imagen del scroll

Started by Prg, December 29, 2009, 10:38:56 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Prg

hola, tengo el siguiente código, en el cual intento mover el segundo fondo del scroll, sin embargo no se mueve nada, y si lo hace lo hace de forma automática cuando muevo el primero pero sólo durante uan parte del primer scroll, y luego deja de hacerlo.

[code language="bennu"]private
fondo2,scroll_g;
begin
set_mode(320,240,32);
        scroll_g=load_png('nombre.png');
   define_region(1,0,0,320,200);
   fondo2=load_png('fondo1_16.png');
   start_scroll(0,0,scroll_g,fondo2,1,0);
loop

      
      if (key(_space))
              if (key(_UP)) scroll.y1--; end
              if (key(_down)) scroll.y1++; end
              if (key(_left)) scroll.x1--; end
              if (key(_right)) scroll.x1++; end
      else
              if (key(_UP)) scroll.y0--; end
              if (key(_down)) scroll.y0++; end
              if (key(_left)) scroll.x0--; end
              if (key(_right)) scroll.x0++; end
      end

if (key(_esc) or exit_status) exit(); end
frame;
end
end[/code]

alguien sabe como moverlo manualmente, o almenos que se mueva en todo el scroll principal (la primera imagen del scroll).

adjunto codigo con graficos.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Drumpi

Tengo demasiado sueño como para leer/descargar código, así que vy a soltar una burrada:
¿Puede ser que el scroll haya llegado al límite de la imagen? Te recomiendo que para este tipo de pruebas actives los flags de scroll cíclico horizontal y vertical en ambos planos (si no recuerdo mal: 1+2+4+8).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Prg

hola amigo, duerme  ;)
la pantalla es de 320,240
el primer scroll es de 800x600, creo.
el segundo es de 350x260
así que creo que debería funcionar bien, tengo tiempo con este problema, no lo había comentado porque esperaba que fuera algo temporal, o una burrada, pero no lo logro solucionar, y ya me enfadé de buscar sin encontrar la solución.

activarlo cíclico seguro funcionará, pero debería moverse uniformemente mientras el primero se mueve no es así? (como lo hacía en el div2)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

BoMbErLiNk

#3
Según veo llamas a un scroll no ciclico (debería ser flags 4 si quieres que el plano de atrás que es más pequeño se repita) y luego tratas de mover ambos planos a la misma velocidad manualmente, es decir si el plano principal lo mueves a 4x el del fondo debería ser a 2x para notar la diferencia por ejemplo.

Si te interesa más un scroll manejado por una camara (como en div), mira este ejemplo :

[code language="bennu"]
Program ejemplo_scroll;

Private
   fichero1;

Begin
   fichero1=load_fpg("mi.fpg");

   start_scroll(INT numero, INT libreria, INT grafico, INT fondo, INT region, 15); // 15 es ambos planos ciclicos en todos los sentidos

   scroll.camera=id; // esto hace el control automatico del scroll

   ctype=c_scroll;
   graph=1; // un cursor o algo
   Loop 
       If (key(_right)) x+=4; End
       If (key(_left)) x-=4; End
       If (key(_down)) y+=4; End
       If (key(_up)) y-=4; End                    
       If (key(_esc)) exit(); End
        Frame;
   End
End
[/code]

Prg

mmm, no es exactamente la idea. creo que mejor resumo la pregunta como:

¿porque el movimiento del segundo scroll no es (en x) (ancho del segundo scroll)/(ancho del primer scroll)*x0?, de esta forma el segundo scroll se movería a lo largo de todo le primer scroll.

si no se puede, ¿lo puedo hacer manualmente? modifico los valores de x1,y1 de la estructura y no pasa nada

Notas:
INT Start_scroll ( <INT scrollnumber> , <INT fileID> , <INT graphID> , <INT backgroundgraphID> , <INT regionnumber> , <INT lockindicator> )
2do scroll=The graphID of the graphic for the background of the scroll window=4to parámetro
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Windgate

Cuidado Prg, para poder mover el segundo scroll creo recordar que hay que poner a 0 el valor que mide la "proporción" de desplazamiento entre uno y otro scroll... No recuerdo el nombre de ese campo, mírate la documentación. Si no pones a 0 ese valor el segundo scroll siempre se mueve respecto del primero, por mucho que intentes modificar sus valores... Intenta eso amigo, a ver si te sirve.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

Quote from: Windgate on December 31, 2009, 03:56:51 PM
Cuidado Prg, para poder mover el segundo scroll creo recordar que hay que poner a 0 el valor que mide la "proporción" de desplazamiento entre uno y otro scroll... No recuerdo el nombre de ese campo, mírate la documentación. Si no pones a 0 ese valor el segundo scroll siempre se mueve respecto del primero, por mucho que intentes modificar sus valores... Intenta eso amigo, a ver si te sirve.
wow, no lo sabía, gracias, investigaré eso. muchas gracias :) karma++
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Drumpi

scroll.ratio era, si no recuerdo mal: indica el porcentaje de movimiento del gráfico de fondo respecto al gráfico principal: con 50 se mueve a la mitad de velocidad, con 200 se mueve el doble de rápido, etc, etc...

La verdad es que no sabía que los dos planos de scroll estaban "atados" por defecto.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Prg

entiendo gracias a ambos. y karma tambi'en para ti Drumpi.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Erkosone

Vaya.. iba a preguntar yo ahora esto mismo, gracias por la info ;)