C++sfml在窗口打开后立即接收到关闭事件
C++ sfml receives close event just after window opens
我正试图从这个链接中学习SFML教程,但是,由于某种原因,我的应用程序似乎在我的程序进入事件循环时立即缩放关闭事件。
这是我的密码。
#include <SFML/Graphics.hpp>
#include <iostream>
// Here is a small helper for you ! Have a look.
#include "ResourcePath.hpp"
int main()
{
sf::RenderWindow Window(sf::VideoMode(500,400),"SFML tutorial");
/* Or we can do this
* sf::RenderWindow Window
* Window.create (sf::VideoMode(800,600),"SFML tutorial");
*/
//Game loop
while(Window.isOpen())
{
sf::Event Event;
while(Window.pollEvent(Event));
{
if(Event.type == sf::Event::Closed)
{
Window.close();
std::cout << "Close" << std::endl;
}
}
}
return 0;
}
由于某种原因,一旦我的程序进入事件循环,它就会收到一个sf::event::Closed事件。我做了一些研究,这并不是因为窗户对我的屏幕来说太大
为了解决我的问题,我不得不将int变量canClose
添加到0,然后将事件循环修改为0。
if(Event.type == sf::Event::Closed)
{
if(canClose == 1)
{
Window.close();
} else {
canClose = 1;
}
}
完成此操作后,窗口将打开并按预期运行。
p.S这是使用xcode和SFML模板进行的。
编辑:
刚刚创建了一个新的xcode SFML项目,并删除了其中的一些代码,以创建一个空窗口,这似乎很糟糕。代码看起来完全相同。这很奇怪,因为它是完全相同的代码
根据我所看到的,不要使用if语句来检查事件,而是使用switch语句。尝试轮询事件时也使用while(window.isOpen())
你读过关于的教程吗http://www.sfml-dev.org?因为我可以保证它是学习sfml的最佳来源。在使用其他源之前先使用它。
您的问题是您声明了变量Event Event类型,您必须将变量的名称更改为小写。
这样
#include <SFML/Graphics.hpp>
#include <iostream>
// Here is a small helper for you ! Have a look.
#include "ResourcePath.hpp"
int main()
{
sf::RenderWindow Window(sf::VideoMode(500,400),"SFML tutorial");
/* Or we can do this
* sf::RenderWindow Window
* Window.create (sf::VideoMode(800,600),"SFML tutorial");
*/
//Game loop
while(Window.isOpen())
{
sf::Event event;
while(Window.pollEvent(event));
{
if(event.type == sf::Event::Closed)
{
Window.close();
std::cout << "Close" << std::endl;
}
}
}
return 0;
这样你就不会有任何问题
相关文章:
- 处理闪烁窗口事件
- 等待 WaitForMultipleObjects 窗口中的事件数量可变
- Qt将鼠标移动事件转移到新窗口
- Wxwidgets - 如何添加调整大小事件处理程序以使"X"绘图随窗口调整大小?
- FLTK:窗口在 MacOS 上获得焦点时的事件
- C++ winAPI 无法处理子窗口事件
- 将输入事件发送到窗口
- 如何添加事件以退出窗口
- 无法从窗口获取 SDL2 事件
- XCB_POLL_FOR_EVENT未检测到关闭窗口的XCB_CLIENT_MESSAGE事件
- Xdamage:获取窗口内容更改的事件
- 如果窗口服务被杀,如何处理事件
- 有没有办法接收有关在窗口中启动的进程的事件
- 哪个事件属于qt c ++中的窗口焦点更改
- 将鼠标事件发送到虚拟现实OpenGL场景中的QtQuick窗口
- SFML FPS访问窗口事件的问题
- SDL视频显示窗口:如何连接窗口关闭事件回调
- 如何处理 WXWIDGETS 中父窗口的鼠标事件
- 如何将事件处理程序添加到桌面窗口
- 窗口创建错误 - 可能是事件处理