我正在尝试使用 SFML 和本教程制作一个简单的 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,因为我已经为事件自动完成工作。MouseButtonPressed 和所有其他枚举值出现sf::Event::EventType::
在代码块中的作用域之后。我还检查了 Event.hpp 文件,它是正确的。我不明白为什么编译器会惹恼我。
当我尝试删除范围并只编写“event.Type == KeyPressed”时,编译器会说“Keypressed 未在此范围内声明”。我在 Ubuntu 12.04 上运行 Code Blocks 10.05。
知道怎么了?
编辑:这是我的 Event.hpp