根据LuaBridge 自述文件,LuaBridge 不支持“枚举常量”,我认为它只是enums
. 由于sf::Event
几乎完全enums
是,有什么办法可以公开课程吗?目前我能想出的唯一其他解决方案是检测 C++ 中的按键,然后向 Lua 发送一个描述事件的字符串。显然,现代键盘上有大约 100 多个键,这将导致大量、丑陋的 if 语句。
没用过SFML的朋友:链接到sf::Event类源码
更新:
在尝试创建我的问题中概述的函数后,我发现它无论如何都不起作用,因为在 C++ 中不能返回多个字符串,因此大多数事件都被忽略了。
示例源(不起作用):
std::string getEvent()
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed) {window.close(); return "";}
else if (event.type == sf::Event::GainedFocus) {return "GainedFocus";}
else if (event.type == sf::Event::LostFocus) {return "LostFocus";}
else if (event.type == sf::Event::Resized) {return "Resized";}
else if (event.type == sf::Event::TextEntered)
{
if ((event.text.unicode < 128) && (event.text.unicode > 0)) {return "" + static_cast<char>(event.text.unicode);}
}
else if (event.type == sf::Event::KeyPressed)
{
//If else for all keys on keyboard
}
else if (event.type == sf::Event::KeyReleased)
{
//If else for all keys on keyboard
}
else {return "";}
}
return "";
}
更新更新:
由于此问题收到的评论或答案为零,因此我决定不排除其他库。所以,如果有支持枚举的 C++ 库,我会接受