Есть ли контроль Delphi «джойстик»?
Вопрос
Я хотел бы выравнивать объект в x и y, используя мышь, чтобы переместить его в положение. Я могу свернуть решение, используя различные элементы управления (или кнопки), но оно грязно, и я задался вопросом, есть ли управление - например, джойстик - который обеспечивает управление 2 -осевым управлением, используя мышь и стреляет со скоростями, которые варьируются в зависимости от его позиция?
Решение
У Афаика Джедаи (Джедай Апилиб?) Тоже был заголовок джойстика. Это винапи, а не com, так что не участвует в TLB
Другие советы
Пытаться Nldjoystick, написанный мной компонент с открытым исходным кодом и основан на Pure Winapi (mmsystem.pas). Это можно загрузить с сервера SVN здесь.
Интерфейс:
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property AbsCenter;
property AbsMax;
property AbsMin;
property Active default False;
property Advanced default False;
property AxisCount;
property Axises;
property ButtonCount;
property HasPOV;
property ID;
property OnButtonDown;
property OnButtonUp;
property OnMove;
property OnPOVChanged;
property PollingInterval default 40;
property RepeatButtonDelay default 350;
property RepeatMoveDelay default 350;
property SuspendScreensaver default False;
property ThresholdFactor;
Может быть, вы можете сделать что -то подобное самостоятельно.
- Возьмите панель и зарегистрируйтесь на Mouse Up, вниз и перемещайте события
- На Mousedown установите логический (fbuttondown), чтобы вы знали, что кнопка мыши нажата и сохраняет координаты x и y mousepointer.
- На MouseMove проверьте, не работает ли кнопка (fbuttondown) и переместите свой объект. Чем больше ваш мышер перемещается с его сохраненной позиции, тем быстрее вы двигаетесь.
- На MouseUp установите fbuttondown в false
Вышеуказанное очень примитивное, но должно работать.
Я погуглил за «джойстик DLL» и нашел бесчисленное количество. Вы, вероятно, можете добавить один из них в свой проект, а затем получить доступ к его C API из Delphi, просто написав заголовок TLIB (или как его называют, давно не делал этого).
Вы можете использовать компоненты Delphix. Они являются обертками для DirectX, и один из них оборачивается вокруг интерфейса Joystick DirectX, насколько я помню. Он заворачивается в стиле Delphi, так что его легко использовать.