我正在编写一个 2D 对象编辑器,以便我可以更快地为基本程序创建 UI。我根本没有使用任何位图。相反,我只是在游戏循环中使用函数调用绘制原语。到目前为止一切都很好,但我想知道如何在运行时更改对象的颜色。
基本概念是我使用一个变量来表示颜色,当用户调用改变该变量值的函数时,就会改变颜色。简单的。就像是:
void runColor(){
ALLEGRO_COLOR color = NULL;
if(event.mouse.button&1)
color = al_map_rgb(255, 0, 0);
else
color = al_map_rgb(0, 255, 0);
al_draw_filled_rectangle(firstXval, firstYval, secondXval, secondYval, color);
}
不幸的是,这不起作用。当我使用类似的代码时,根本就没有绘制对象。没有编译错误,没有运行时错误,什么都没有。相反,这些对象没有颜色,因此是不可见的,尽管我已经验证它们确实是被创建的。所以我猜这意味着颜色变量在某种程度上是正确的类型,但不保留al_map_rgb()
它设置为等于该函数返回的值时的值。我知道它必须返回一些东西,否则它就不能成为函数中的参数al_draw
。
虽然我可以写出导致不同绘图函数的 if else if 语句,但我宁愿只使用像上面这样的简单代码包,而不是一堆冗余的东西来解决应该简单的问题。我只是不想使用相当于胶带的代码。
所以我确信这个问题可能与我al_map_rgb()
返回值的假设有关ALLEGRO_COLOR
,但我不知道。你们愿意提出一些建议吗?