我在c ++中的sfml项目有问题。编译并运行这个简单的代码后,我开始在窗口中使用我的鼠标(代码是一个非常简单的寻路算法,在这里,我点击," ch"纹理去的地方并且在aprox之后。窗口停止响应10秒左右。程序没有崩溃的唯一时间是我在调试模式下运行它。我不久前有一个更大的项目有这个问题,但由于这个问题,我放弃了它。我相信程序崩溃与使用鼠标有关,因为在较大的项目中,我曾经以同样的方式启动和崩溃,我也使用了sfml鼠标功能,并且在编译并在调试模式下运行时,它没有&#39崩溃我在Code :: Blocks版本:13.12编程,而SFML库我不确定是什么版本。我不知道为什么会这样,所以请问你这个问题的帮助。感谢:d
代码:
#include <SFML/Graphics.hpp>
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
using namespace sf;
int main()
{
RenderWindow win(VideoMode(700,700),"test");
float x=10,y=10;
int mx=x,my=y;
int mxo,myo;
Texture t;
t.loadFromFile("char.png");
Sprite ch;
ch.setTexture(t);
ch.setPosition(x,y);
while(win.isOpen())
{
win.clear();
if(Mouse::isButtonPressed(Mouse::Left))
{
mx=Mouse::getPosition(win).x;
my=Mouse::getPosition(win).y;
}
if(x!=mx)
{
if(mx>x)
{
x++;
}
if(mx<x)
{
x--;
}
Sleep(2);
}
if(y!=my)
{
if(my>y)
{
y++;
}
if(my<y)
{
y--;
}
Sleep(2);
}
ch.setPosition(x,y);
win.draw(ch);
win.display();
}
return 0;
}
答案 0 :(得分:2)
您在主事件循环中阻塞了睡眠,并且没有处理事件。
这使操作系统认为该程序没有响应,它会告诉您 。
它实际上并没有崩溃。