快板 5 没有事件工作
allegro 5 no events work
如果我测试应该发生的动作本身(例如,如果我将移动函数放入循环本身或触发函数中,它就可以完美地工作),但没有事件工作,关闭显示,使用 esc 或按 X,任何按下的键,什么也看不到。
我在代码中找不到错误,有人可以帮忙吗?游戏循环是波纹管,所有的主要功能都在这里 http://pastebin.ca/2468619:
while(!done)
{
ALLEGRO_EVENT ev;
al_wait_for_event(event_queue, &ev);
if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
{
std::cout << "EXITING MOFO";
done= true;
}
else if(ev.type == ALLEGRO_KEY_DOWN)
{
switch(ev.keyboard.keycode)
{
case ALLEGRO_KEY_ESCAPE:
done = true;
break;
case ALLEGRO_KEY_A:
keys[A] = true;
break;
case ALLEGRO_KEY_S:
keys[S] = true;
break;
case ALLEGRO_KEY_D:
keys[D] = true;
break;
case ALLEGRO_KEY_W:
keys[W] = true;
break;
case ALLEGRO_KEY_SPACE:
fireWeapon(0);
break;
case ALLEGRO_KEY_LEFT:
keys[LEFT] = true;
break;
case ALLEGRO_KEY_RIGHT:
keys[RIGHT] = true;
break;
case ALLEGRO_KEY_UP:
keys[UP] = true;
break;
case ALLEGRO_KEY_DOWN:
keys[DOWN] = true;
break;
case ALLEGRO_KEY_ENTER:
std::cout << "FUCK";
fireWeapon(1);
break;
}
}
else if(ev.type == ALLEGRO_KEY_UP)
{
switch(ev.keyboard.keycode)
{
case ALLEGRO_KEY_A:
keys[A] = false;
break;
case ALLEGRO_KEY_S:
keys[S] = false;
break;
case ALLEGRO_KEY_D:
keys[D] = false;
break;
case ALLEGRO_KEY_W:
keys[W] = false;
break;
case ALLEGRO_KEY_LEFT:
keys[LEFT] = false;
break;
case ALLEGRO_KEY_RIGHT:
keys[RIGHT] = false;
break;
case ALLEGRO_KEY_UP:
keys[UP] = false;
break;
case ALLEGRO_KEY_DOWN:
keys[DOWN] = false;
break;
}
}
else if(ev.type == ALLEGRO_EVENT_TIMER)
{
render = true;
moveTank();
updateBullet(0);
updateBullet(1);
}
if(render && al_is_event_queue_empty(event_queue))
{
render = false;
//al_set_target_bitmap(back);
//al_clear_to_color(al_map_rgb(0,0,0));
drawTank(0);
drawTank(1);
drawBullet(0);
drawBullet(1);
//setupDebris();
al_flip_display();
al_clear_to_color(al_map_rgb(0,0,0));
}
我看了同样的教程。你必须添加al_register_event_source(event_queue、al_get_display_event_source(显示))到主。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- Android NDK传感器向事件队列报告奇怪的间隔
- 以螺旋方式打印矩阵的程序.(工作不好)
- C++ 信号和插槽不工作:插槽不响应事件
- QT 事件过滤器 mouseEvent->pos().x() 始终为零,但 mouseEvent->pos().y() 工作正常
- Qt:工作线程和 GUI 事件之间的关系
- OpenCL 和 C++:事件无法正常工作
- 开关(事件类型)不工作和计时器不显示
- 无法让 matplotlib 事件处理程序与 Boost.Python 一起工作
- sfml事件:: textertered无法正常工作
- BOOST :: ASIO带有主/工人线程 - 我可以在发布工作之前启动事件循环
- SDL 按钮/事件停止工作
- WM_MOUSEWEEL停止工作,而WinAPI(C++)中的其他事件仍在工作
- 快板 5 没有事件工作
- 在C++Builder中有COM事件处理的工作示例吗
- qtreeview的qt事件筛选器不工作
- OLEDragDrop事件与编译的exe一起工作,但在调试时不工作
- Qt鼠标事件不工作在QGraphicsScene
- Qt 在另一个线程中排队工作线程对象的退出事件