拓展 UI类 可以使用 裁切函数

This commit is contained in:
Lenheart 2024-12-13 22:28:47 +08:00 committed by WONIU
parent 50bea6ba37
commit 89dc150b09
6 changed files with 81 additions and 7 deletions

Binary file not shown.

View File

@ -0,0 +1,29 @@
/*
文件名:LayerObject.nut
路径:Core/BaseClass/LayerObject.nut
创建日期:2024-12-13 21:26
文件用途:
*/
class Layer extends Actor {
constructor(...) {
local C_Object;
if (vargv.len() == 0) {
C_Object = LayerActor_Create();
base.constructor(C_Object);
} else {
C_Object = vargv[0];
base.constructor(C_Object, true);
}
}
//设置图层裁剪区域
function SetClipRect(x, y, w, h) {
LayerActor_SetClipRect(this.C_Object, x, y, w, h);
}
//设置图层透明度
function SetLayerOpacity(alpha) {
LayerActor_SetOpacity(this.C_Object, alpha);
}
}

View File

@ -7,7 +7,7 @@
//窗口队列
_SYS_WINDOW_LIST_ <- [];
//基础窗口类 所有UI类继承与本类
class Yosin_BaseWindow extends Actor {
class Yosin_BaseWindow extends Layer {
//父控件
ParentFlag = null;
//子控件

View File

@ -13,6 +13,7 @@ sqr/Core/BaseClass/BaseObject.nut
sqr/Core/BaseClass/AudioClass.nut
sqr/Core/BaseClass/StageClass.nut
sqr/Core/BaseClass/ActorObject.nut
sqr/Core/BaseClass/LayerObject.nut
sqr/Core/BaseClass/UserStorage.nut
sqr/Core/BaseClass/SpriteObject/SpriteFrameClass.nut
sqr/Core/BaseClass/SpriteObject/SpriteClass.nut

View File

@ -6,6 +6,9 @@
*/
class _Select_Character_SettingBackground_Object_Window extends Yosin_CommonUi {
//编号
Idx = 0;
//蓝色悬停框
RectMask = null;
//黄色选中框
@ -14,14 +17,16 @@ class _Select_Character_SettingBackground_Object_Window extends Yosin_CommonUi {
SelectFlag = false;
constructor(x, y, width, height, Idx) {
constructor(x, y, width, height, gIdx) {
base.constructor(x, y, width, height);
//编号
Idx = gIdx;
//注册绘制
RegisterDraw(Idx);
RegisterDraw();
}
function RegisterDraw(Idx) {
function RegisterDraw() {
//背景
local Background = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/small/background_small_event.img", Idx);
Background.SetScale(0.7, 0.7);
@ -53,8 +58,16 @@ class _Select_Character_SettingBackground_Object_Window extends Yosin_CommonUi {
function OnMouseLbClick(MousePos_X, MousePos_Y) {
base.OnMouseLbClick(MousePos_X, MousePos_Y);
if (isInRect) {
//遍历父对象中的所有按钮 还原其他按钮
foreach(Button in Parent.SettingBackgroundButtonList) {
Button.SelectMask.SetVisible(false);
Button.SelectFlag = false;
}
//设置自身选中状态
SelectMask.SetVisible(true);
SelectFlag = true;
Parent.Parent.ChangeBackground(Idx);
}
}
}
@ -66,9 +79,19 @@ class _Select_Character_SettingBackground_Window extends Yosin_Window {
//是否可见
Visible = false;
//选择背景按钮集合
SettingBackgroundButtonList = null;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
SettingBackgroundButtonList = [];
SetClipRect(-gWidth, 0, gWidth, gHeight + 20);
// ShowBorder(true);
// SetLayerOpacity(1);
}
function Init() {
//注册绘制
RegisterDraw();
}
@ -79,7 +102,13 @@ class _Select_Character_SettingBackground_Window extends Yosin_Window {
Addchild(Background);
for (local i = 0; i< 24; i++) {
local Buf = _Select_Character_SettingBackground_Object_Window(10 + (101 * (i % 2)), 10 + (61 * (i / 2)), 91, 51, i);
local Buf = _Select_Character_SettingBackground_Object_Window(5 + (101 * (i % 2)), 9 + (61 * (i / 2)), 91, 51, i);
SettingBackgroundButtonList.push(Buf);
//如果是父对象默认构造的默认是勾选状态
if (i == Parent.Info.Background) {
Buf.SelectMask.SetVisible(true);
Buf.SelectFlag = true;
}
AddUIChild(Buf);
}
}
@ -147,6 +176,8 @@ class _Select_Character_Window extends Yosin_Window {
function RegisterWindow() {
SettingBackgroundWindow = _Select_Character_SettingBackground_Window("选择角色_设置背景图片窗口", 850, 28, 212, 129, 0);
AddUIChild(SettingBackgroundWindow);
//先添加为子对象 因为子对象需要用到父对象
SettingBackgroundWindow.Init();
}
function RegisterWidget() {
@ -170,10 +201,20 @@ class _Select_Character_Window extends Yosin_Window {
SettingButton.Addchild(LoginTextActor);
}
//切换背景
function ChangeBackground(Idx) {
if (BackGround) {
BackGround.RemoveSelf();
BackGround = null;
}
BackGround = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/large/background_large_event.img", Idx);
BackGround.SetZOrder(-10);
Addchild(BackGround);
}
function RegisterDraw() {
//大背景 根据玩家的设定背景决定
BackGround = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/large/background_large.img", Info.Background);
Addchild(BackGround);
ChangeBackground(Info.Background);
}

View File

@ -157,5 +157,8 @@
},
"User/Object/ActiveObject/GameObjectClass.nut": {
"description": "游戏对象(对象基类)"
},
"Core/BaseClass/LayerObject.nut": {
"description": "图层类"
}
}