拓展 UI类 可以使用 裁切函数
This commit is contained in:
		
							parent
							
								
									f12cb50133
								
							
						
					
					
						commit
						38a41472d6
					
				
							
								
								
									
										
											BIN
										
									
								
								Yosin_Engine.exe
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								Yosin_Engine.exe
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -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); | ||||
|     } | ||||
| } | ||||
|  | @ -7,7 +7,7 @@ | |||
| //窗口队列 | ||||
| _SYS_WINDOW_LIST_ <- []; | ||||
| //基础窗口类 所有UI类继承与本类 | ||||
| class Yosin_BaseWindow extends Actor { | ||||
| class Yosin_BaseWindow extends Layer { | ||||
|     //父控件 | ||||
|     ParentFlag = null; | ||||
|     //子控件 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -157,5 +157,8 @@ | |||
|     }, | ||||
|     "User/Object/ActiveObject/GameObjectClass.nut": { | ||||
|         "description": "游戏对象(对象基类)" | ||||
|     }, | ||||
|     "Core/BaseClass/LayerObject.nut": { | ||||
|         "description": "图层类" | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue