DOF/sqr/Core/UI_Class/UI_Widget.nut

82 lines
2.4 KiB
Plaintext

/*
文件名: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;
OnClickMoveSound = null;
OnClickMoveSoundFlag = false;
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
//鼠标事件回调
function OnMouseProc(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
local Pos = GetWorldPosition();
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);
}
//鼠标左键按下回调
function OnMouseLbDown(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
local Pos = GetWorldPosition();
if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) {
isLBDown = true;
}
base.OnMouseLbDown(MousePos_X, MousePos_Y, WindowInteractiveFlag);
}
//鼠标左键弹起回调
function OnMouseLbUp(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
isLBDown = false;
base.OnMouseLbUp(MousePos_X, MousePos_Y, WindowInteractiveFlag);
}
//鼠标左键单击回调
function OnMouseLbClick(MousePos_X, MousePos_Y, WindowInteractiveFlag) {
local Pos = GetWorldPosition();
if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) {
if (OnClick) OnClick(this);
//如果有配置按键音效
if (OnClickSound) {
Sq_PlaySoundEffect(OnClickSound);
}
}
base.OnMouseLbClick(MousePos_X, MousePos_Y, WindowInteractiveFlag);
}
}