DOF/sqr/Core/UI_Class/UI_Widget.nut

82 lines
2.4 KiB
Plaintext
Raw Normal View History

2024-12-11 15:08:57 +08:00
/*
文件名:UI_Widget.nut
路径:Core/UI_Class/UI_Widget.nut
创建日期:2024-11-08 14:24
文件用途: 控件基类
*/
//基础UI
class Yosin_CommonUi extends Yosin_BaseWindow {
ObjectId = null;
Localtion_X = 0;
Localtion_Y = 0;
isLBDown = false;
//是否悬停
isInRect = false;
OnClick = null;
OnClickSound = null;
2025-02-20 13:53:36 +08:00
OnClickMoveSound = null;
OnClickMoveSoundFlag = false;
2024-12-11 15:08:57 +08:00
Data = null;
constructor(x, y, width, height) {
this.Localtion_X = x;
this.Localtion_Y = y;
this.Width = width;
this.Height = height;
ObjectId = clock();
base.constructor();
//构造时第一次同步坐标
SyncPos(x, y);
}
//override
//鼠标事件回调
2025-02-20 13:53:36 +08:00
function OnMouseProc(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
2024-12-11 15:08:57 +08:00
local Pos = GetWorldPosition();
2025-02-20 13:53:36 +08:00
if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) {
//如果有配置移动音效
if (OnClickMoveSound && !OnClickMoveSoundFlag) {
OnClickMoveSoundFlag = true;
Sq_PlaySoundEffect(OnClickMoveSound);
}
isInRect = true;
} else {
OnClickMoveSoundFlag = false;
isInRect = false;
}
base.OnMouseProc(MousePos_X, MousePos_Y, WindowInteractiveFlag);
2024-12-11 15:08:57 +08:00
}
//鼠标左键按下回调
2025-02-20 13:53:36 +08:00
function OnMouseLbDown(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
2024-12-11 15:08:57 +08:00
local Pos = GetWorldPosition();
if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) {
isLBDown = true;
}
2025-02-20 13:53:36 +08:00
base.OnMouseLbDown(MousePos_X, MousePos_Y, WindowInteractiveFlag);
2024-12-11 15:08:57 +08:00
}
//鼠标左键弹起回调
2025-02-20 13:53:36 +08:00
function OnMouseLbUp(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
2024-12-11 15:08:57 +08:00
isLBDown = false;
2025-02-20 13:53:36 +08:00
base.OnMouseLbUp(MousePos_X, MousePos_Y, WindowInteractiveFlag);
2024-12-11 15:08:57 +08:00
}
//鼠标左键单击回调
2025-02-20 13:53:36 +08:00
function OnMouseLbClick(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
2024-12-11 15:08:57 +08:00
local Pos = GetWorldPosition();
if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) {
if (OnClick) OnClick(this);
2024-12-19 23:55:56 +08:00
//如果有配置按键音效
if (OnClickSound) {
Sq_PlaySoundEffect(OnClickSound);
}
2024-12-11 15:08:57 +08:00
}
2025-02-20 13:53:36 +08:00
base.OnMouseLbClick(MousePos_X, MousePos_Y, WindowInteractiveFlag);
2024-12-14 11:14:20 +08:00
}
2025-01-07 20:52:28 +08:00
}