控件框架基础引入

This commit is contained in:
2025-10-21 23:06:06 +08:00
parent b16e8d7820
commit 5d78244ef0
10 changed files with 381 additions and 70 deletions

View File

@@ -0,0 +1,78 @@
/*
文件名:BaseWidget.nut
路径:UI/Windows/Widget/BaseWidget.nut
创建日期:2025-10-21 22:29
文件用途:基础控件
*/
class GameWidget_BaseButton extends GameWidget {
//按钮状态
ButtonState = 0;
//Img路径
Path = null;
//Img索引
Idx = null;
//帧集合
FrameList = null;
//精灵状态
SpriteState = -1;
//按下时的模拟偏移
DownSimulateOffset = true;
constructor(X, Y, W, H, Path, Idx) {
this.Path = Path;
this.Idx = Idx;
base.constructor(X, Y, W, H);
FrameList = [];
//构造4个精灵
for (local i = 0; i < 4; i++) {
local Buffer = Sprite(this.Path, this.Idx + i);
Buffer.SetVisible(false);
FrameList.push(Buffer);
AddChild(Buffer);
}
}
function ChangeFrame() {
//状态更改 刷新精灵帧
if (ButtonState != SpriteState) {
//按下时模拟偏移的Flag 如果按下 调整Y坐标向下一个单位
if (DownSimulateOffset) {
if (ButtonState == 2) {
Y += 1;
SetPos(X, Y);
} else if (SpriteState == 2) {
Y -= 1;
SetPos(X, Y);
}
}
if (SpriteState != -1) FrameList[SpriteState].SetVisible(false);
SpriteState = ButtonState;
FrameList[SpriteState].SetVisible(true);
}
}
function Proc(Dt) {
//不可用
if (ButtonState == 3) {
} else {
//按下
if (isLBDown) {
ButtonState = 2;
}
//悬停
else if (isInRect) {
ButtonState = 1;
}
//普通
else {
ButtonState = 0;
}
}
ChangeFrame();
}
}