mirror of
https://github.com/duckietm/Nitro-Cool-UI.git
synced 2025-06-21 22:36:58 +00:00
82 lines
2.1 KiB
TypeScript
82 lines
2.1 KiB
TypeScript
import { GetRoomEngine, MouseEventType, TouchEventType } from '@nitrots/nitro-renderer';
|
|
|
|
let didMouseMove = false;
|
|
let lastClick = 0;
|
|
let clickCount = 0;
|
|
|
|
export const DispatchTouchEvent = (event: TouchEvent, canvasId: number = 1, longTouch: boolean = false, altKey: boolean = false, ctrlKey: boolean = false, shiftKey: boolean = false) =>
|
|
{
|
|
let x = 0;
|
|
let y = 0;
|
|
|
|
if(event.touches[0])
|
|
{
|
|
x = event.touches[0].clientX;
|
|
y = event.touches[0].clientY;
|
|
}
|
|
|
|
else if(event.changedTouches[0])
|
|
{
|
|
x = event.changedTouches[0].clientX;
|
|
y = event.changedTouches[0].clientY;
|
|
}
|
|
|
|
let eventType = event.type;
|
|
|
|
if(longTouch) eventType = TouchEventType.TOUCH_LONG;
|
|
|
|
if(eventType === MouseEventType.MOUSE_CLICK || eventType === TouchEventType.TOUCH_END)
|
|
{
|
|
eventType = MouseEventType.MOUSE_CLICK;
|
|
|
|
if(lastClick)
|
|
{
|
|
clickCount = 1;
|
|
|
|
if(lastClick >= (Date.now() - 300)) clickCount++;
|
|
}
|
|
|
|
lastClick = Date.now();
|
|
|
|
if(clickCount === 2)
|
|
{
|
|
if(!didMouseMove) eventType = MouseEventType.DOUBLE_CLICK;
|
|
|
|
clickCount = 0;
|
|
lastClick = null;
|
|
}
|
|
}
|
|
|
|
switch(eventType)
|
|
{
|
|
case MouseEventType.MOUSE_CLICK:
|
|
break;
|
|
case MouseEventType.DOUBLE_CLICK:
|
|
break;
|
|
case TouchEventType.TOUCH_START:
|
|
eventType = MouseEventType.MOUSE_DOWN;
|
|
|
|
didMouseMove = false;
|
|
break;
|
|
case TouchEventType.TOUCH_MOVE:
|
|
eventType = MouseEventType.MOUSE_MOVE;
|
|
|
|
didMouseMove = true;
|
|
break;
|
|
case TouchEventType.TOUCH_END:
|
|
eventType = MouseEventType.MOUSE_UP;
|
|
break;
|
|
case TouchEventType.TOUCH_LONG:
|
|
eventType = MouseEventType.MOUSE_DOWN_LONG;
|
|
break;
|
|
default: return;
|
|
}
|
|
|
|
if(eventType === TouchEventType.TOUCH_START)
|
|
{
|
|
GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, altKey, ctrlKey, shiftKey, false);
|
|
}
|
|
|
|
GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, altKey, ctrlKey, shiftKey, false);
|
|
};
|