사람들이 프로그램을 축소하라고 말한 후에 위에서 언급 한 것과 같은 오류가있는 프로그램의 축약 된 버전입니다. 프로그램에 잠시 후에. 프로그램이 잘 작동하면 계속 작동합니다. 운동 기능을 볼 수 있습니까? 작동하지 않습니다. 스프라이트는 어떤 방향으로도 움직이지 않습니다. 움직이는 동안 매우 큰 변동 값을 주면 , 스프라이트는 프로그램을 시작할 때 그 위치에서 옮겨져 더 이상 움직이지 않고 그 위치에있게됩니다. 예를 들어 sprite.move (400.f, 400.f)를 쓰면 스프라이트가 (0, 0) ~ (400,400)으로 이동하여 더 이상 움직이지 않습니다. 다음은 코드의 단축 버전입니다 :ConsoleApplication1.exe의 0x00000000에서 예외가 발생했습니다. 0xC0000005 : 액세스 위반 위치 실행 0x00000000
#include"SFML\Graphics.hpp"
#include<iostream>
int main()
{
sf::RenderWindow window(sf::VideoMode(640, 480), "CHECK",sf::Style::Default);
std::cout << "WORKS";
sf::Texture text;
text.loadFromFile("bahamut.png");
sf::Sprite sprite;
sf::Clock frap;
sprite.setTexture(text);
while (window.isOpen())
{
float fps = frap.restart().asSeconds();
sf::Vector2f movements;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::A))
{
movements.y = 0;
movements.x = -1 * fps;
}
else
{if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::D))
{
movements.y = 0;
movements.x = 1 * fps;
}
else
{ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::S))
{
movements.y = 1 * fps;
movements.x = 0;
}
else
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::W))
{
movements.y = -1 * fps;
movements.x = 0;
}
else
{
movements.x = 0;
movements.y = 0;
}
}
}
}
sprite.move(movements);
window.clear();
window.draw(sprite);
window.display();
}
return 0;
}
내가 코드에 개선이 여전히 같은 결과 오류가 발생합니다. 내가 사고를 본 dissassembler 사용에 이
00B37AEE CMP ESI에서 ESP
window.display에서 발생(). 내가 함수를 만들고 스프라이트를 표시하는 데 사용할 때 는, 운동은
움직임을 0 벡터로 초기화해야합니다. < >의 움직임 만 허용하려면 위 또는 아래로 이동해야합니다. 모든 ifels if 문을 사용하여 모든 작업을 무시할 수 있습니다. 어쨌든 움직임의 요소. 스프라이트가 움직이기를 얼마나 기다리나요? 중요한 움직임을 알아 내려면 최소한 3 초 동안 키를 누르고 있으면 이동 속도에 따라 3 픽셀 씩 움직이는 것을 볼 수 있습니다 (플로트 벡터로 위치를 저장한다고 가정 할 때 ...). 오류 메시지에 관해서는, 나는 당신의 호출 스택을 보지 않고는 많은 것을 할 수 없다. – Eddge