Marzo 30, 2010, 09:00:13 PM Ultima modificación: Marzo 30, 2010, 09:01:56 PM por Vector
Alguien podr?a hacerme un ejemplo de como hacer transiciones en c?digo,tanto con las transiciones comunes como para transiciones del extension package. Es que no entiendo lo de Kind , Ts_Set_Transition y otras cosas m?s.  (Un ejemplo adjunto escrito no hace falta uno en el GM)

                Gracias, espero sus respuestas.

creo q te refieres a esto o me equivoco????


Citartransition_kind Indicates the next frame transition (0-17).
transition_time Total time used for the transition (in milliseconds).
transition_steps Number of steps for the transition.
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

M?s bien creo que se trata de una funci?n reciente llamada transition_add o transition_create (sino es gallo es gallina XD). Se supone que nos permite crear nuestras propias transiciones con c?digo, pero requiere que se mantengan ciertos argumentos como kind y otros. Lo que pasa es que no tengo el GM a la mano as? que no estoy seguro de los nombres.

La verdad yo tampoco s? usarla, pero estoy casi seguro que a eso es lo que se refiere Vector.
       

Probablemente tengas razon Hackware, pero al menos aporte hasta lo q entendi XD XD XD
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

De hecho me parece que lo que quiere es simplemente saber como usar c?digo para activar las transiciones. En cuyo caso soccer2008 tendr?a raz?n.

Si de eso se trata, lo ?nico que debes hacer es utilizar la variable transition_kind, ten en cuenta que transition_kind solo afecta la pr?xima transici?n, as? que debes utilizarlo cada vez que cambias de room:

transition_kind = 5;
room_goto_next();

transition_kind = tr_melt;
room_goto_previous();


En el manual viene la transici?n equivalente a cada indice, y al utilizar la expansi?n de transiciones puedes usar los nombres que vienen en su respectiva ayuda. Por cierto, la funci?n transition_time no existe en GM7.


Si por otro lado, como menciona Hackware, lo que quieres es crear tus propias transiciones debes usar la funci?n transition_define, que utiliza dos argumentos, el indice de la transici?n y el script que contiene el comportamiento de la transici?n. Aunque antes de que te pongas a hacer transiciones te advierto que es bastante complejo.

Muy buena explicaci{on Killer...tbm ser?a cuesti?n q de acuerdo a diferentes valores ya sea aleatorio puedes establecerlas en ciertas variables para de esta manera puedas controlar las transiciones a tu gusto...saludos XD XD XD
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

Gracias a Killer y a los demas que me contestaron. Me gustaria un ejemplo de Transition_define (con todo el proceso de creaci?n) Es que tengo 3 engines de transiciones de la comunidad en ingles y es muy complicado de entender ya que da valores a variables propias y mucho c?digo.

usa un sprite full scale, y le disminuyes el alpha gradualmente, creo eso te seria lo mas facil de hacer.

Pues veamos, lo primero seria crear el script con el comportamiento de la transici?n, el script recibe 5 argumentos, una superficie con la imagen del room origen, una superficie con la imagen del room destino, el ancho de las superficies, el alto de las superficies, y la posici?n actual de la transici?n (de 0 a 1), en ese orden.


Si por ejemplo quieres que la imagen destino cubra por los costados a la imagen origen entonces primero debes dibujar la superficie origen.

Luego haces que la superficie destino se dibuje en dos mitades, cada una al extremo del campo de visi?n, y que su posici?n cambie seg?n la posici?n de la transici?n:

Código (tr_Transicion) [Seleccionar]
/*
argument0 superficie con room de origen
argument1 superficie con room de destino
argument2 ancho de las superficies
argument3 altura de las superficies
argument4 posicion de la transicion
*/
//Dibuja Origen
draw_surface(argument0,0,0);
//Dibuja Destino
draw_surface_part(argument1,0,0,argument2/2,argument3,-(argument2/2)+(argument2/2)*argument4,0);
draw_surface_part(argument1,argument2/2,0,argument2/2,argument3,argument2-(argument2/2)*argument4,0);



Con eso bastar?a para el script. Ahora utilizas transition_define para que el script se utilice como una transici?n:

transition_define(99,tr_Transicion);

Luego, cuando quieras usar la transici?n que creaste usas transition_kind con el index que le elegiste:

transition_set=99;
room_goto_next()


Claro, ese es el ejemplo m?s simple, transiciones m?s complejas tambi?n son posibles, por ejemplo te dejo esta otra transici?n:

Código (tr_PasaPagina) [Seleccionar]
/*
argument0 superficie con room de origen
argument1 superficie con room de destino
argument2 ancho de las superficies
argument3 altura de las superficies
argument4 posicion de la transicion
*/
var S,P,A,X,Y,XX,YY;

S=surface_create(argument2,argument3);
P=abs(1-argument4);
A=70*P;
surface_set_target(S);
//Posiciona
draw_surface(argument0,0,0);
X=lengthdir_x(argument3+argument3*0.25*P,-A+90);
Y=lengthdir_y(argument3+argument3*0.25*P,-A+90);
XX=argument2*P;
YY=argument3-((argument3*0.075)*P)-argument3*0.5*abs(0.5-abs(argument4-0.5));
draw_surface_ext(argument1,XX+X,YY+Y,1+0.25*P,1+0.25*P,-A,c_white,1);
//Borra
draw_set_blend_mode_ext(0,6);
A=45*P;
X=lengthdir_x(argument3*2,-A+90);
Y=lengthdir_y(argument3*2,-A+90);
XX=argument2-argument2*0.5*argument4;
YY=argument3+argument3*0.5*argument4;
draw_surface_ext(argument1,XX+X,YY+Y,2,2,-A,c_black,1);
draw_set_blend_mode(bm_normal);
surface_reset_target();
//Dibuja
draw_surface(argument1,0,0);
if argument4>0.5 draw_set_alpha(0.8-(argument4-0.5)*2);
else draw_set_alpha(0.8);
draw_rectangle(0,0,argument2,argument3,0);
draw_set_alpha(1);
draw_surface(S,0,0);
surface_free(S);


Se supone que es un cambio de p?gina, pero nunca la termine.