拓展 UI类 可以使用 裁切函数
This commit is contained in:
		
							parent
							
								
									50bea6ba37
								
							
						
					
					
						commit
						89dc150b09
					
				
							
								
								
									
										
											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_ <- []; | _SYS_WINDOW_LIST_ <- []; | ||||||
| //基础窗口类 所有UI类继承与本类 | //基础窗口类 所有UI类继承与本类 | ||||||
| class Yosin_BaseWindow extends Actor { | class Yosin_BaseWindow extends Layer { | ||||||
|     //父控件 |     //父控件 | ||||||
|     ParentFlag = null; |     ParentFlag = null; | ||||||
|     //子控件 |     //子控件 | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ sqr/Core/BaseClass/BaseObject.nut | ||||||
| sqr/Core/BaseClass/AudioClass.nut | sqr/Core/BaseClass/AudioClass.nut | ||||||
| sqr/Core/BaseClass/StageClass.nut | sqr/Core/BaseClass/StageClass.nut | ||||||
| sqr/Core/BaseClass/ActorObject.nut | sqr/Core/BaseClass/ActorObject.nut | ||||||
|  | sqr/Core/BaseClass/LayerObject.nut | ||||||
| sqr/Core/BaseClass/UserStorage.nut | sqr/Core/BaseClass/UserStorage.nut | ||||||
| sqr/Core/BaseClass/SpriteObject/SpriteFrameClass.nut | sqr/Core/BaseClass/SpriteObject/SpriteFrameClass.nut | ||||||
| sqr/Core/BaseClass/SpriteObject/SpriteClass.nut | sqr/Core/BaseClass/SpriteObject/SpriteClass.nut | ||||||
|  |  | ||||||
|  | @ -6,6 +6,9 @@ | ||||||
| */ | */ | ||||||
| class _Select_Character_SettingBackground_Object_Window extends Yosin_CommonUi { | class _Select_Character_SettingBackground_Object_Window extends Yosin_CommonUi { | ||||||
| 
 | 
 | ||||||
|  |     //编号 | ||||||
|  |     Idx = 0; | ||||||
|  | 
 | ||||||
|     //蓝色悬停框 |     //蓝色悬停框 | ||||||
|     RectMask = null; |     RectMask = null; | ||||||
|     //黄色选中框 |     //黄色选中框 | ||||||
|  | @ -14,14 +17,16 @@ class _Select_Character_SettingBackground_Object_Window extends Yosin_CommonUi { | ||||||
|     SelectFlag = false; |     SelectFlag = false; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     constructor(x, y, width, height, Idx) { |     constructor(x, y, width, height, gIdx) { | ||||||
|         base.constructor(x, y, width, height); |         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); |         local Background = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/small/background_small_event.img", Idx); | ||||||
|         Background.SetScale(0.7, 0.7); |         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) { |     function OnMouseLbClick(MousePos_X, MousePos_Y) { | ||||||
|         base.OnMouseLbClick(MousePos_X, MousePos_Y); |         base.OnMouseLbClick(MousePos_X, MousePos_Y); | ||||||
|         if (isInRect) { |         if (isInRect) { | ||||||
|  |             //遍历父对象中的所有按钮 还原其他按钮 | ||||||
|  |             foreach(Button in Parent.SettingBackgroundButtonList) { | ||||||
|  |                 Button.SelectMask.SetVisible(false); | ||||||
|  |                 Button.SelectFlag = false; | ||||||
|  |             } | ||||||
|  |             //设置自身选中状态 | ||||||
|             SelectMask.SetVisible(true); |             SelectMask.SetVisible(true); | ||||||
|             SelectFlag = true; |             SelectFlag = true; | ||||||
|  | 
 | ||||||
|  |             Parent.Parent.ChangeBackground(Idx); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -66,9 +79,19 @@ class _Select_Character_SettingBackground_Window extends Yosin_Window { | ||||||
|     //是否可见 |     //是否可见 | ||||||
|     Visible = false; |     Visible = false; | ||||||
| 
 | 
 | ||||||
|  |     //选择背景按钮集合 | ||||||
|  |     SettingBackgroundButtonList = null; | ||||||
|  | 
 | ||||||
|     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | ||||||
|         base.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(); |         RegisterDraw(); | ||||||
|     } |     } | ||||||
|  | @ -79,7 +102,13 @@ class _Select_Character_SettingBackground_Window extends Yosin_Window { | ||||||
|         Addchild(Background); |         Addchild(Background); | ||||||
| 
 | 
 | ||||||
|         for (local i = 0; i< 24; i++) { |         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); |             AddUIChild(Buf); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | @ -147,6 +176,8 @@ class _Select_Character_Window extends Yosin_Window { | ||||||
|     function RegisterWindow() { |     function RegisterWindow() { | ||||||
|         SettingBackgroundWindow = _Select_Character_SettingBackground_Window("选择角色_设置背景图片窗口", 850, 28, 212, 129, 0); |         SettingBackgroundWindow = _Select_Character_SettingBackground_Window("选择角色_设置背景图片窗口", 850, 28, 212, 129, 0); | ||||||
|         AddUIChild(SettingBackgroundWindow); |         AddUIChild(SettingBackgroundWindow); | ||||||
|  |         //先添加为子对象 因为子对象需要用到父对象 | ||||||
|  |         SettingBackgroundWindow.Init(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function RegisterWidget() { |     function RegisterWidget() { | ||||||
|  | @ -170,10 +201,20 @@ class _Select_Character_Window extends Yosin_Window { | ||||||
|         SettingButton.Addchild(LoginTextActor); |         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() { |     function RegisterDraw() { | ||||||
|         //大背景 根据玩家的设定背景决定 |         //大背景 根据玩家的设定背景决定 | ||||||
|         BackGround = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/large/background_large.img", Info.Background); |         ChangeBackground(Info.Background); | ||||||
|         Addchild(BackGround); |  | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -157,5 +157,8 @@ | ||||||
|     }, |     }, | ||||||
|     "User/Object/ActiveObject/GameObjectClass.nut": { |     "User/Object/ActiveObject/GameObjectClass.nut": { | ||||||
|         "description": "游戏对象(对象基类)" |         "description": "游戏对象(对象基类)" | ||||||
|  |     }, | ||||||
|  |     "Core/BaseClass/LayerObject.nut": { | ||||||
|  |         "description": "图层类" | ||||||
|     } |     } | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue