bueno, antes de postear la duda, me puse ha hacer varias pruebas, y concluyo que:
O yo no se usar "set_text_color"
o algo anda mal
Ilustrare mi duda con este codigo modificado del manual de OSK
Import "mod_text";
Import "mod_video";
Import "mod_map";
Import "mod_key";
Import "mod_debug";
Process Main()
Private
int color;
int identificador;
end
begin
set_mode(800,200,32);
identificador=write(0,100,100,4,"Hola");
loop
write_var(0,100,50,4,color);
write_var(0,0,0,0,identificador);
if (key(_r))
color=rgba(255,0,0,255);
set_text_color(rgba(255,0,0,255));
end
if (key(_g))
debug;
set_text_color(1,rgba(0,255,0,255));
end
if (key(_b))
set_text_color(1,rgba(0,0,255,255));
end
if (key(_a))
set_text_color(1,rgba(64,243,28,0));
end
if (key(_y))
set_text_color(1,rgba(255,255,0,0));
end
if (key(_p))
set_text_color(1,rgba(255,0,255,0));
end
if (key(_o))
set_text_color(1,rgba(0,255,255,0));
end
if (key(_esc))
break;
end
frame;
end
end
El codigo anterior deberia cambiar el color del texto "Hola" (con identificador 1) cada vez que se presiona una de las teclas (g,b,r,y,a,p,o)
pero no lo hace. Intentando encontrar el problema, coloqué la libreria mod_debug para ver que arojaba, y cuando veo linea por linea hasta "set_text_color" si me hace el cambio de color correctamente.
¿que estoy haciendo mal?
en el juego que estoy haciendo también no me hace el cambio de color, solo hasta llegar a debug, un fade o cuando tengo graficos en movimiento en la misma zona del texto(scroll y regiones) me cambia el color.
por que le pasas 1 como primer parametro? el primer parametro debe ser el id del texto, no 1.
debes usar indentificador, no 1.
y esos write_var deben ir fuera del loop.
por otro lado, ya veo porque no actualiza, es que no se marca el objeto como que cambio... lo tengo que arreglar.
por ahora, si pones restore_type=1 va a funcionar.
ok, ya he corregido el codigo(lo de las write_var, un pequeño error del que no me fijé)
con poner restore_type=1; ya hace el cambio
begin
set_mode(800,200,32);
identificador=write(0,100,100,4,"Hola");
write_var(0,0,0,0,identificador);
loop
if (key(_r))
color=rgba(255,0,0,255);
set_text_color(identificador,rgba(255,0,0,255));
end
if (key(_g))
set_text_color(identificador,rgba(0,255,0,255));
end
if (key(_b))
set_text_color(identificador,rgba(0,0,255,255));
end
if (key(_a))
set_text_color(identificador,rgba(64,243,28,0));
end
if (key(_y))
set_text_color(identificador,rgba(255,255,0,0));
end
if (key(_p))
set_text_color(identificador,rgba(255,0,255,0));
end
if (key(_o))
set_text_color(identificador,rgba(0,255,255,0));
end
if (key(_esc))
break;
end
restore_type=1;
frame;
end
end
la proxima version ya tendra el fix y no sera necesario poner el restore_type que fuerza a redibujar todo...
si tu compilas bennugd desde los fuentes, puedes compilarlo que ya tiene el fix.