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
|
|
|
}
|