no me funciona correctamente "set_text_color"

Started by master, December 14, 2012, 09:40:49 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

master

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.

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

master

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


SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2