c++ - 如何通过多个类“联合变量”(sfml)使用 pollevent
问题描述
根据我的理解sf::Event
,只有一个循环,因为它们都共享相同的内存空间,所以我的问题是我可以sf::Event
在我的其他课程中使用:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
sf::Event
如果我想与我的其他班级分享,我是否可以参考我的或者这是不正确的
class a{
void handleEvent(sf::Event& event){
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::Escape)
{
std::cout << "the escape key was pressed" << std::endl;
std::cout << "control:" << event.key.control << std::endl;
std::cout << "alt:" << event.key.alt << std::endl;
std::cout << "shift:" << event.key.shift << std::endl;
std::cout << "system:" << event.key.system << std::endl;
}
}
}
};
解决方案
sf::Event
被实现为不同事件数据的联合,这意味着当时只有一个数据结构处于活动状态,并且取决于type
字段的值,但它适用于每个实例而不是每个类型。
因此,您可以安全地传递事件,如果我理解正确,您的代码在这种情况下是可以的。
推荐阅读
- android - Bixby:我正在寻找一种通过 Bixby 发出警报或通知的方法
- android - Flutter Shake Detector 无法检测到手机的震动
- google-apps-script - 在 Google 表格折线图中自定义 vAxis 值
- javascript - 如何使用 jquery 将两个值放在同一个输入中?
- django - 如何在 Apache2 中创建将域的配置文件添加到 /etc/apache2/sites-available/?
- arrays - 将四叉树实现为数组
- reactjs - 在前端的帖子中更新 likes 数组
- javascript - 从 dom 标签中获取值
- powershell - 通过循环在表单上添加标签
- airflow - 气流 - 如何获得所有未来的运行日期