我正在尝试使用SFML和this教程制作简单的2D游戏。这是我在教程中当前进度的代码:我遇到类Event的枚举EventType问题。成员变量名称为Type。
#include "stdafx.h"
#include "SplashScreen.h"
void SplashScreen::Show(sf::RenderWindow & renderWindow)
{
sf::Image image;
if(image.LoadFromFile("images/SplashScreen.png") != true)
{
return;
}
sf::Sprite sprite(image);
renderWindow.Draw(sprite);
renderWindow.Display();
sf::Event event;
while(true)
{
while(renderWindow.GetEvent(event))
{
if( event.Type == sf::Event::EventType::KeyPressed
|| event.Type == sf::Event::EventType::MouseButtonPressed
|| event.Type == sf::Event::EventType::Closed )
{
return;
}
}
}
}
这是我的stdafx.h:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#ifndef STDAFX_H
#define STDAFX_H
#include <stdio.h>
// TODO: reference additional headers your program requires here
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/Audio.hpp>
#include <map>
#include <iostream>
#include <cassert>
#endif //STDAFX_H
似乎它包含了Event.hpp,因为我已经将autocompletation用于事件。 MouseButtonPressed和所有其他枚举值显示在代码块中的sf::Event::EventType::
范围之后。我还检查了Event.hpp文件,这是正确的。我不明白为什么编译器会弄乱我。
当我尝试删除范围并仅编写“event.Type == KeyPressed”时,编译器会说“未在此范围内声明Keypressed”。 我在Ubuntu 12.04上运行代码块10.05。
知道什么是错的?
编辑:This是我的Event.hpp
答案 0 :(得分:2)
枚举的名称不是范围。只需将sf::Event::EventType::KeyPressed
替换为sf::Event::KeyPressed
。
答案 1 :(得分:0)
同事,您不直接包括SF.h吗?像这样:
//////并使用名称空间:using namespace sf;
////避免在整个句子之前使用sf :: ///// sf :: Event ....
while(window.isOpen())
{//。enter code here
..
Event event
while(window.pollEvent(event)
{`enter code here`
if(event.type == Event::KeyPressed)
if(event.key.code == Keyboard::Up)
`enter code here`