gpt4 book ai didi

c++ - 有没有用 Luabridge 向 Lua 公开 sf::Event 的好方法?

转载 作者:IT老高 更新时间:2023-10-28 23:21:40 27 4
gpt4 key购买 nike

根据LuaBridge readme , LuaBridge 不支持“枚举常量”,我假设它只是 enums。由于 sf::Event 几乎完全是 enums,有什么办法可以公开这个类吗?目前我能想出的唯一其他解决方案是检测 C++ 中的按键,然后向 Lua 发送一个描述事件的字符串。显然,现代键盘上有大约 100 多个键,这将导致大量、丑陋的 if 语句。

对于那些没有使用过 SFML 的人:Link to sf::Event class source code


更新:

在尝试创建我的问题中概述的函数后,我发现它无论如何都不起作用,因为在 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++库,我会接受的

最佳答案

Since this question has received zero comments or answers, I've decided not to rule out other libraries. So, if there is a C++ library that supports enums, I will accept it

Thor 库,一个 SFML 扩展,支持 conversions between SFML key types and strings .这将帮助您序列化枚举器并将它们作为字符串传递给 Lua——如果需要,还可以返回。

关于c++ - 有没有用 Luabridge 向 Lua 公开 sf::Event 的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com