- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
除了不断调用 remove_joystick()
然后 install_joystick
之外,有没有办法更新运行时插入的操纵杆数量?这被证明是非常慢的(从 60 FPS 到大约 5)。
只请 Allegro 4.2 回答...
void Joystick::Update() {
//If joystick input was lost, attempt to reacquire.
if(GetNumJoysticks() == 0) {
throw InputNotAvailableException("Joystick");
}
//If all joysticks were deleted remove input and do nothing.
if(_numjoysticks == 0) {
remove_joystick();
return;
}
//Update state information
if(poll_joystick() < 0) {
throw InputNotAvailableException("Joystick");
}
for(int i = 0; i < _numButtons; ++i) {
_prevButtons[i].b = _curButtons[i].b;
_prevButtons[i].name = _curButtons[i].name;
_curButtons[i].b = joy[_joyNumber].button[i].b;
_curButtons[i].name = joy[_joyNumber].button[i].name;
}
for(int i = 0; i < _numSticks; ++i) {
for(int j = 0; j < joy[_joyNumber].stick[i].num_axis; ++j) {
_prevSticks[i].axis[j].name = _curSticks[i].axis[j].name;
_prevSticks[i].axis[j].pos = _curSticks[i].axis[j].pos;
_prevSticks[i].axis[j].d1 = _curSticks[i].axis[j].d1;
_prevSticks[i].axis[j].d2 = _curSticks[i].axis[j].d2;
_curSticks[i].axis[j].name = joy[_joyNumber].stick[i].axis[j].name;
_curSticks[i].axis[j].pos = joy[_joyNumber].stick[i].axis[j].pos;
_curSticks[i].axis[j].d1 = joy[_joyNumber].stick[i].axis[j].d1;
_curSticks[i].axis[j].d2 = joy[_joyNumber].stick[i].axis[j].d2;
}
_prevSticks[i].flags = _curSticks[i].flags;
_prevSticks[i].name = _curSticks[i].name;
_curSticks[i].flags = joy[_joyNumber].stick[i].flags;
_curSticks[i].name = joy[_joyNumber].stick[i].name;
}
}
int Joystick::GetNumJoysticks() {
remove_joystick();
if(install_joystick(JOY_TYPE_DIRECTX)) {
return 0;
}
return (num_joysticks);
}
最佳答案
4.x 系列没有。 5.x 系列可以。
您必须使用自定义平台特定代码(假设存在此类事件)监听 native 操作系统事件,并且仅在检测到更改时调用 Allegro deinit/init 函数,或者要求用户手动启动操纵杆刷新。
在 Linux 下,您可以使用 inotify_add_watch()
/dev/input 来检查更改。查看 4.4 Allegro 代码,您似乎想要调用 Win32 函数 joyGetNumDevs()
和 joyGetPos()
。像这样的东西:
int WIN_MAX_JOYSTICKS = joyGetNumDevs(); // this should never change
JOYINFO ji;
int pluggedin_count = 0;
for (int i = 0; i < WIN_MAX_JOYSTICKS; ++i)
if (joyGetPos(i, &ji) == JOYERR_NOERROR) ++pluggedin_count;
if (pluggedin_count != last_pluggedin_count) /* reinit Allegro */
您必须每 N 秒执行一次。
这些 joy* 函数是 Windows 函数,因此请阅读 MSDN 文档以了解如何使用它们。
关于c++ - Allegro 能否在运行时更新操纵杆的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11376998/
我有一个在 SpriteKit 中创建的圆形操纵杆,我如何将较小的控制杆夹在较大的操纵杆底座内,并以编程方式防止它超出操纵杆底座。 在我的 didMove(toView:) 方法中设置操纵杆的代码。
嘿,我需要创建一个用于相机控制的操纵杆。操纵杆需要能够向左、右、上、下四个方向移动,其中两个方向具有停止功能。我在网上搜索了几个小时,终于找到了一个叫做 nipplejs 的东西。我已将 nipple
Android 3.1+ 支持操纵杆和游戏 handle ,但没有任何示例。我尝试使用 onTrackballEvent 但它没有用。如何在我的 Android 应用程序中使用操纵杆? 最佳答案 查看
每当我改变操纵杆的方向时,我都会尝试执行我的玩家 Sprite 的一些动画。 我正在使用 TheSneakyNarwhal's drop in Joystick class它使用以下方法: if (
如何在 Sphero-Android 应用程序中使用 JoystickView?我关注了this链接以便在我的布局中实现 Joystick View,但 RobotLibrary.jar 中没有名为
我正在使用 Microsoft DirectX 访问我的游戏 handle 。这是一个像这样的 USB 游戏 handle : 我可以知道何时按下按钮以及轴的模拟值... 问题是是否有办法知道何时按下
我正在开发一款带有操纵杆的 Arduino 游戏。我有 4 个 LED 灯,每 2 秒,其中 1 个会亮起。使用操纵杆时,您必须尽快使用react才能关闭 LED 灯。例如,如果左侧 LED 亮起,您
我有一个 USB 操纵杆,我想为其编写自己的 HID 驱动程序。值得注意的是,我想在 Windows 接收操纵杆输入和我的应用程序收到该输入事件通知之间插入延迟。我还想更改我的应用程序感知的操纵杆的身
在我的项目中,我使用 directinput 来管理连接到 PC 的操纵杆并且它可以工作,但是恕我直言,directimput 很难理解和完美地管理... 是否存在其他一些库/方法来以更漂亮的模式管理
我有一个便宜的 PS3 Controller 和一个 NEO-GEO X Controller 。它们都在例如上检测到。 Fedora 20 和 Lubuntu 14.04。它们出现在 lsusb 中
我一直在尝试从 USB 操纵杆读取数据(x/y 轴、按下的按钮等),而且我听说过 DirectInput。一直在寻找几个小时来找到一个像样的例子或演练但收效甚微。如果有人可以分享一个简单的教程,或者指
我想将操纵杆的两 Axis float (水平和垂直)转换为 360 度,以便在游戏中设置玩家方向。根据我的研究,我发现最好的方法是使用 Atan2。 变量: self.rot = 0 horaxis
我是一名优秀的程序员,十分优秀!