- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个 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
有关,但我不知道。你们愿意提出一些建议吗?
最佳答案
首先,无需做出任何假设。正如您在 the manual 中看到的那样, al_map_rgb()
确实返回一个 ALLEGRO_COLOR
对象。
这段代码没有任何问题。 x,y
值不正确,目标位图不是您所期望的,或者您没有调用 al_flip_display()
。请务必在每一帧(即每次 al_flip_display()
)调用时重绘整个场景。
此外,在绘制图元时,请确保您了解坐标的工作原理。绘制填充矩形时,您将指定外部点 (x1,y1)-(x1+w,y1+h)
。
关于c++ - 在 Allegro 5 的运行时更改基元的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937233/
此功能的 allegro 5 版本是什么? texture_number = allegro_gl_make_texture_ex(AGL_TEXTURE_MASKED, my_bitmap, GL_
我得到了 Allegro 开发库,编写并编译了一个简单的应用程序,然后在我的计算机上运行它,它运行良好。我有一个 friend 测试过它,但是当双击它时它没有做任何事情。我认为问题是他没有安装Alle
我正在制作一款游戏,我不希望我的用户下载游戏文件夹以外的任何内容,只需双击即可运行。我可以在没有 Xcode 的情况下在 OSX 中编译我的代码,但当我尝试在另一台使用 OSX 的计算机上运行游戏时,
我想知道是否有人可以为这个错误指出正确的方向。 我正在学习使用Visual Studio 2010中安装的Allegro 5进行2D游戏编程。 我一直在关注一个教程系列,直到上一课为止,一切都很好。
我正在编写MOD播放器,尝试使用Allegro5原始流功能播放样本,但我无法弄清该流的确切初始化参数,以播放从mod文件加载的样本数据。 这就是我所拥有的: xf::ModLoader ml; ml.
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在使用 Allegro 5 用 C 语言开发 2D 游戏,其中敌人从固定位置向玩家当前位置发射射弹。我知道我必须根据玩家的位置和敌人的位置来计算假想三角形的正切。但是,如何让射弹根据该值沿着直线运
我正在按照命令使用 Allegro 做我的类(class)作业。 我需要捕获键盘上的按键事件,为此我使用了以下代码: al_wait_for_event(evento, &ev); if(ev.typ
我的一个 friend 试图在 Allegro 中重载一个用于比较颜色的相等运算符,但是它不起作用,他收到错误“运算符不匹配==”这是在 Color 类/结构之外重载的,重载的运算符函数如下所示: t
我正在制作一个程序,可以绘制在屏幕上弹跳的球。我目前正在研究绘制球的部分。 我的代码包括以下内容: BallEngine 类 - 管理所有 Allegro 函数/对象 BallManager 类 -
例如,如果我使用 Allegro 函数 ALLEGRO_DISPLAY *display=al_create_display(660, 660); 创建的屏幕上的 (100 , 100) 像素是红色或
谁能告诉我如何在 allegro 5 中打开一个浏览窗口,用户可以在其中选择文件,程序将使用该文件作为输入? 最佳答案 Allegro 5 具有这种文件对话框功能。 How to create dia
我是 allegro 和 c++ 的初学者。我正在尝试使用位图命令。我用这个简单的程序来测试它: #include BITMAP *red; int main(){ allegro_init
除了不断调用 remove_joystick() 然后 install_joystick 之外,有没有办法更新运行时插入的操纵杆数量?这被证明是非常慢的(从 60 FPS 到大约 5)。 只请 All
我正在接受有关将 allegro 库与 C++ 结合使用的培训,但我遇到了一个问题,在将大图像用于视差背景时,我会在屏幕上向下滚动时出现持续的负载/故障,使我所有的图像都闪烁了一下,有没有办法加载背景
我想在图形窗口中打印出我的鼠标坐标,当用户点击它时,应该会出现一条消息“clicked”。但问题是当用户点击它时,我收到了大约 5-10 条消息,而不是 1 条消息。我知道这可能是因为我松开按钮的速度
我正在学习面向对象编程和 allegro 库,所以我开始编写一个简单的菜单,但代码显示黑屏然后崩溃。 对于有关类外观、使用 header 拆分代码、代码的一般语法以及最重要的是找到代码无法解决的问题的
在 Allegro 中,我可以通过运行 将窗口设置为可调整大小 al_set_new_display_flags(ALLEGRO_RESIZABLE); 之前 display = al_create_
大家好,我正在制作一个 C++ 游戏,我试图将位图加载到我的游戏屏幕上,但是当我这样做时,图像没有出现,只有一个黑色的正方形,如下所示: 我目前正在使用以下代码: BITMAP *buffer = c
我在播放样本 Allegro 5 时遇到了问题。当我播放样本时,我无法再次播放该样本,直到它完成播放。有时,如果另一个不同的样本正在播放,它也不会播放样本。 无论如何要解决这个问题? 我用“声音”类播
我是一名优秀的程序员,十分优秀!