diff --git a/Yosin_Engine.exe b/Yosin_Engine.exe index 9b56955..fc7bcb0 100644 Binary files a/Yosin_Engine.exe and b/Yosin_Engine.exe differ diff --git a/sqr/Core/BaseClass/LayerObject.nut b/sqr/Core/BaseClass/LayerObject.nut new file mode 100644 index 0000000..2bb7795 --- /dev/null +++ b/sqr/Core/BaseClass/LayerObject.nut @@ -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); + } +} \ No newline at end of file diff --git a/sqr/Core/UI_Class/UI_Core.nut b/sqr/Core/UI_Class/UI_Core.nut index 098e668..6ba2781 100644 --- a/sqr/Core/UI_Class/UI_Core.nut +++ b/sqr/Core/UI_Class/UI_Core.nut @@ -7,7 +7,7 @@ //窗口队列 _SYS_WINDOW_LIST_ <- []; //基础窗口类 所有UI类继承与本类 -class Yosin_BaseWindow extends Actor { +class Yosin_BaseWindow extends Layer { //父控件 ParentFlag = null; //子控件 diff --git a/sqr/SquirrelFileConfig.cfg b/sqr/SquirrelFileConfig.cfg index 820828e..b114710 100644 --- a/sqr/SquirrelFileConfig.cfg +++ b/sqr/SquirrelFileConfig.cfg @@ -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 diff --git a/sqr/User/UI/Window/1_Select_Character.nut b/sqr/User/UI/Window/1_Select_Character.nut index 9043455..9d378c8 100644 --- a/sqr/User/UI/Window/1_Select_Character.nut +++ b/sqr/User/UI/Window/1_Select_Character.nut @@ -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); } diff --git a/sqr/folder-alias.json b/sqr/folder-alias.json index 1657390..3dfb04b 100644 --- a/sqr/folder-alias.json +++ b/sqr/folder-alias.json @@ -157,5 +157,8 @@ }, "User/Object/ActiveObject/GameObjectClass.nut": { "description": "游戏对象(对象基类)" + }, + "Core/BaseClass/LayerObject.nut": { + "description": "图层类" } } \ No newline at end of file