| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 文件名:UI_Widget.nut | 
					
						
							|  |  |  | 路径:Core/UI_Class/UI_Widget.nut | 
					
						
							|  |  |  | 创建日期:2024-11-08	14:24 | 
					
						
							|  |  |  | 文件用途: 控件基类 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | //基础UI | 
					
						
							|  |  |  | class Yosin_CommonUi extends Yosin_BaseWindow { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ObjectId = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Localtion_X = 0; | 
					
						
							|  |  |  |     Localtion_Y = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     isLBDown = false; | 
					
						
							|  |  |  |     //是否悬停 | 
					
						
							|  |  |  |     isInRect = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     OnClick = null; | 
					
						
							|  |  |  |     OnClickSound = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Data = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor(x, y, width, height) { | 
					
						
							|  |  |  |         this.Localtion_X = x; | 
					
						
							|  |  |  |         this.Localtion_Y = y; | 
					
						
							|  |  |  |         this.Width = width; | 
					
						
							|  |  |  |         this.Height = height; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ObjectId = clock(); | 
					
						
							|  |  |  |         base.constructor(); | 
					
						
							|  |  |  |         //构造时第一次同步坐标 | 
					
						
							|  |  |  |         SyncPos(x, y); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //override | 
					
						
							|  |  |  |     //鼠标事件回调 | 
					
						
							|  |  |  |     function OnMouseProc(MousePos_X, MousePos_Y) { | 
					
						
							|  |  |  |         local Pos = GetWorldPosition(); | 
					
						
							|  |  |  |         if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) isInRect = true; | 
					
						
							|  |  |  |         else isInRect = false; | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |         base.OnMouseProc(MousePos_X, MousePos_Y); | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |     //鼠标左键按下回调 | 
					
						
							|  |  |  |     function OnMouseLbDown(MousePos_X, MousePos_Y) { | 
					
						
							|  |  |  |         local Pos = GetWorldPosition(); | 
					
						
							|  |  |  |         if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) { | 
					
						
							|  |  |  |             isLBDown = true; | 
					
						
							|  |  |  |             //如果有配置按键音效 | 
					
						
							|  |  |  |             if (OnClickSound) { | 
					
						
							|  |  |  |                 Sq_PlaySoundEffect(OnClickSound); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |         base.OnMouseLbDown(MousePos_X, MousePos_Y); | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |     //鼠标左键弹起回调 | 
					
						
							|  |  |  |     function OnMouseLbUp(MousePos_X, MousePos_Y) { | 
					
						
							|  |  |  |         isLBDown = false; | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |         base.OnMouseLbUp(MousePos_X, MousePos_Y); | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //鼠标左键单击回调 | 
					
						
							|  |  |  |     function OnMouseLbClick(MousePos_X, MousePos_Y) { | 
					
						
							|  |  |  |         local Pos = GetWorldPosition(); | 
					
						
							|  |  |  |         if (Math.IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Pos.x, Pos.y, Width, Height)) { | 
					
						
							|  |  |  |             if (OnClick) OnClick(this); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |         base.OnMouseLbClick(MousePos_X, MousePos_Y); | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //基础按钮 | 
					
						
							|  |  |  | class Yosin_BaseButton extends Yosin_CommonUi { | 
					
						
							|  |  |  |     //按钮状态 | 
					
						
							|  |  |  |     State = 0; | 
					
						
							|  |  |  |     Path = null; | 
					
						
							|  |  |  |     Idx = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Sprite = null; | 
					
						
							|  |  |  |     SpriteState = -1; | 
					
						
							|  |  |  |     FrameList = null; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-14 11:14:20 +08:00
										 |  |  |     //按下时的模拟偏移 | 
					
						
							|  |  |  |     DownSimulateOffset = true; | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     constructor(X, Y, W, H, Path, Idx) { | 
					
						
							|  |  |  |         this.Path = Path; | 
					
						
							|  |  |  |         this.Idx = Idx; | 
					
						
							|  |  |  |         base.constructor(X, Y, W, H); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         FrameList = []; | 
					
						
							|  |  |  |         Sprite = CL_SpriteObject(); | 
					
						
							|  |  |  |         // Sprite.ShowBorder(true); | 
					
						
							|  |  |  |         Addchild(Sprite); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for (local i = 0; i< 4; i++) { | 
					
						
							|  |  |  |             local Sf = CL_SpriteFrameObject(this.Path, this.Idx + i); | 
					
						
							|  |  |  |             FrameList.push(Sf); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function ChangeFrame() { | 
					
						
							|  |  |  |         //状态更改 刷新精灵帧 | 
					
						
							|  |  |  |         if (State != SpriteState) { | 
					
						
							| 
									
										
										
										
											2024-12-14 11:14:20 +08:00
										 |  |  |             //按下时模拟偏移的Flag 如果按下 调整Y坐标向下一个单位 | 
					
						
							|  |  |  |             if (DownSimulateOffset) { | 
					
						
							|  |  |  |                 if (State == 2) { | 
					
						
							|  |  |  |                     Y += 1; | 
					
						
							|  |  |  |                     SyncPos(X, Y); | 
					
						
							|  |  |  |                 } else if (SpriteState == 2) { | 
					
						
							|  |  |  |                     Y -= 1; | 
					
						
							|  |  |  |                     SyncPos(X, Y); | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  |             } | 
					
						
							|  |  |  |             SpriteState = State; | 
					
						
							|  |  |  |             Sprite.SetFrame(FrameList[SpriteState]); | 
					
						
							|  |  |  |             Sprite.SetPosition(0, 0); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function Proc(Dt) { | 
					
						
							|  |  |  |         //不可用 | 
					
						
							|  |  |  |         if (State == 3) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             //按下 | 
					
						
							|  |  |  |             if (isLBDown) { | 
					
						
							|  |  |  |                 State = 2; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             //悬停 | 
					
						
							|  |  |  |             else if (isInRect) { | 
					
						
							|  |  |  |                 State = 1; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             //普通 | 
					
						
							|  |  |  |             else { | 
					
						
							|  |  |  |                 State = 0; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         ChangeFrame(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //三分法拉伸 | 
					
						
							|  |  |  | class Yosin_EmeStretch extends Yosin_CommonUi { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Path = null; | 
					
						
							|  |  |  |     Idx = null; | 
					
						
							|  |  |  |     //按钮状态 | 
					
						
							|  |  |  |     SpriteList = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor(X, Y, W, H, Path, Idx, Direction = true) { | 
					
						
							|  |  |  |         this.Path = Path; | 
					
						
							|  |  |  |         this.Idx = Idx; | 
					
						
							|  |  |  |         base.constructor(X, Y, W, H); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         SpriteList = []; | 
					
						
							|  |  |  |         SpriteList.push(CL_SpriteObject(Path, Idx)); | 
					
						
							|  |  |  |         SpriteList.push(CL_SpriteObject(Path, Idx + 1)); | 
					
						
							|  |  |  |         SpriteList.push(CL_SpriteObject(Path, Idx + 2)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //横向 | 
					
						
							|  |  |  |         if (Direction) { | 
					
						
							|  |  |  |             local ScaleW = (W - SpriteList[0].GetSize().w - SpriteList[2].GetSize().w); | 
					
						
							|  |  |  |             local ScaleRate = ScaleW / SpriteList[1].GetSize().w; | 
					
						
							| 
									
										
										
										
											2024-12-18 07:02:27 +08:00
										 |  |  |             local ScaleRateH = H / SpriteList[1].GetSize().h; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |             SpriteList[1].SetPosition(SpriteList[0].GetSize().w, 0); | 
					
						
							| 
									
										
										
										
											2024-12-18 07:02:27 +08:00
										 |  |  |             SpriteList[1].SetScale(ScaleRate, ScaleRateH); | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |             SpriteList[2].SetPosition(SpriteList[0].GetSize().w + ScaleW, 0); | 
					
						
							| 
									
										
										
										
											2024-12-18 07:02:27 +08:00
										 |  |  |             if (H !=  SpriteList[1].GetSize().h) { | 
					
						
							|  |  |  |                 SpriteList[0].SetScale(1, ScaleRateH); | 
					
						
							|  |  |  |                 SpriteList[2].SetScale(1, ScaleRateH); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |         } | 
					
						
							|  |  |  |         //纵向 | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             local ScaleH = (H - SpriteList[0].GetSize().h - SpriteList[2].GetSize().h); | 
					
						
							|  |  |  |             local ScaleRate = ScaleH / SpriteList[1].GetSize().h; | 
					
						
							| 
									
										
										
										
											2024-12-18 07:02:27 +08:00
										 |  |  |             local ScaleRateW = H / SpriteList[1].GetSize().w; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |             SpriteList[1].SetPosition(0, SpriteList[0].GetSize().h); | 
					
						
							| 
									
										
										
										
											2024-12-18 07:02:27 +08:00
										 |  |  |             SpriteList[1].SetScale(ScaleRateW, ScaleRate); | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |             SpriteList[2].SetPosition(0, SpriteList[0].GetSize().h + ScaleH); | 
					
						
							| 
									
										
										
										
											2024-12-18 07:02:27 +08:00
										 |  |  |             if (W !=  SpriteList[1].GetSize().w) { | 
					
						
							|  |  |  |                 SpriteList[0].SetScale(ScaleRateW, ScaleRateH); | 
					
						
							|  |  |  |                 SpriteList[2].SetScale(ScaleRateW, ScaleRateH); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-12-14 11:11:36 +08:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         foreach(Child in SpriteList) { | 
					
						
							|  |  |  |             Addchild(Child); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-12-14 11:14:20 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-14 22:20:37 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //九宫格拉伸 | 
					
						
							|  |  |  | class Yosin_NineBoxStretch extends Yosin_CommonUi { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor(X, Y, W, H, Path, Idx) { | 
					
						
							|  |  |  |         base.constructor(X, Y, W, H); | 
					
						
							| 
									
										
										
										
											2024-12-18 12:30:47 +08:00
										 |  |  |         DrawBackground(W, H, Path, Idx); | 
					
						
							| 
									
										
										
										
											2024-12-14 22:20:37 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // 绘制 | 
					
						
							|  |  |  |     function DrawBackground(width, height, path, imgId) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local x = 0; | 
					
						
							|  |  |  |         local y = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 左上角 | 
					
						
							|  |  |  |         local backgroundTopLeft = CL_SpriteObject(path, imgId); | 
					
						
							|  |  |  |         backgroundTopLeft.SetPosition(x, y); | 
					
						
							|  |  |  |         Addchild(backgroundTopLeft); | 
					
						
							|  |  |  |         // 左上角图片大小 | 
					
						
							|  |  |  |         local cornerImgSize = backgroundTopLeft.GetSize(); | 
					
						
							|  |  |  |         local cornerWidth = cornerImgSize.w; | 
					
						
							|  |  |  |         local cornerHeight = cornerImgSize.h; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 中间 | 
					
						
							|  |  |  |         local backgroundCenter = CL_SpriteObject(path, imgId + 4); | 
					
						
							|  |  |  |         backgroundCenter.SetPosition(cornerWidth, y + cornerHeight); | 
					
						
							|  |  |  |         Addchild(backgroundCenter); | 
					
						
							|  |  |  |         // 中间图片大小 | 
					
						
							|  |  |  |         local centerImgSize = backgroundCenter.GetSize(); | 
					
						
							|  |  |  |         local centerWidth = centerImgSize.w; | 
					
						
							|  |  |  |         local centerHeight = centerImgSize.h; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local scaleW = (width.tofloat() - cornerWidth.tofloat() * 2.0) / centerWidth.tofloat(); | 
					
						
							|  |  |  |         local scaleH = (height.tofloat() - y.tofloat() - cornerHeight.tofloat()) / centerHeight.tofloat(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 上边 | 
					
						
							|  |  |  |         local backgroundTop = CL_SpriteObject(path, imgId + 1); | 
					
						
							|  |  |  |         backgroundTop.SetPosition(cornerWidth, y); | 
					
						
							|  |  |  |         backgroundTop.SetScale(scaleW, 1); | 
					
						
							|  |  |  |         Addchild(backgroundTop); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 右上角 | 
					
						
							|  |  |  |         local backgroundTopRight = CL_SpriteObject(path, imgId + 2); | 
					
						
							|  |  |  |         backgroundTopRight.SetPosition(width - cornerWidth, y); | 
					
						
							|  |  |  |         Addchild(backgroundTopRight); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 左边 | 
					
						
							|  |  |  |         local backgroundLeft = CL_SpriteObject(path, imgId + 3); | 
					
						
							| 
									
										
										
										
											2024-12-18 12:30:47 +08:00
										 |  |  |         backgroundLeft.SetPosition(x, y + cornerHeight); | 
					
						
							| 
									
										
										
										
											2024-12-14 22:20:37 +08:00
										 |  |  |         backgroundLeft.SetScale(1, scaleH); | 
					
						
							|  |  |  |         Addchild(backgroundLeft); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 中间 | 
					
						
							|  |  |  |         backgroundCenter.SetScale(scaleW, scaleH); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 右边 | 
					
						
							|  |  |  |         local backgroundRight = CL_SpriteObject(path, imgId + 5); | 
					
						
							|  |  |  |         backgroundRight.SetPosition(width - cornerWidth, y + cornerHeight); | 
					
						
							|  |  |  |         backgroundRight.SetScale(1, scaleH); | 
					
						
							|  |  |  |         Addchild(backgroundRight); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 左下角 | 
					
						
							|  |  |  |         local backgroundBottomLeft = CL_SpriteObject(path, imgId + 6); | 
					
						
							|  |  |  |         backgroundBottomLeft.SetPosition(x, height - cornerHeight); | 
					
						
							|  |  |  |         Addchild(backgroundBottomLeft); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 下边 | 
					
						
							|  |  |  |         local backgroundBottom = CL_SpriteObject(path, imgId + 7); | 
					
						
							|  |  |  |         backgroundBottom.SetPosition(cornerWidth, height - cornerHeight); | 
					
						
							| 
									
										
										
										
											2024-12-18 12:30:47 +08:00
										 |  |  |         backgroundBottom.SetScale(scaleW, 1); | 
					
						
							| 
									
										
										
										
											2024-12-14 22:20:37 +08:00
										 |  |  |         Addchild(backgroundBottom); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 右下角 | 
					
						
							|  |  |  |         local backgroundBottomRight = CL_SpriteObject(path, imgId + 8); | 
					
						
							|  |  |  |         backgroundBottomRight.SetPosition(width - cornerWidth, height - cornerHeight); | 
					
						
							|  |  |  |         Addchild(backgroundBottomRight); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-14 11:14:20 +08:00
										 |  |  | //拼接按钮 | 
					
						
							|  |  |  | class Yosin_SplicingButton extends Yosin_CommonUi { | 
					
						
							|  |  |  |     //按钮状态 | 
					
						
							|  |  |  |     State = 0; | 
					
						
							|  |  |  |     Path = null; | 
					
						
							|  |  |  |     Idx = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SpriteList = null; | 
					
						
							|  |  |  |     SpriteState = -1; | 
					
						
							|  |  |  |     FrameList = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //按下时的模拟偏移 | 
					
						
							|  |  |  |     DownSimulateOffset = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor(X, Y, W, H, Path, Idx, Direction = true, UnavailableFlag = true) { | 
					
						
							|  |  |  |         this.Path = Path; | 
					
						
							|  |  |  |         this.Idx = Idx; | 
					
						
							|  |  |  |         base.constructor(X, Y, W, H); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         SpriteList = array(4); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //普通态 | 
					
						
							|  |  |  |         SpriteList[0] = Yosin_EmeStretch(0, 0, W, H, Path, Idx, Direction); | 
					
						
							|  |  |  |         //悬停态 | 
					
						
							|  |  |  |         SpriteList[1] = Yosin_EmeStretch(0, 0, W, H, Path, Idx + (UnavailableFlag ? 4 : 3), Direction); | 
					
						
							|  |  |  |         //按下态 | 
					
						
							|  |  |  |         SpriteList[2] = Yosin_EmeStretch(0, 0, W, H, Path, Idx + (UnavailableFlag ? 8 : 3), Direction); | 
					
						
							|  |  |  |         if (UnavailableFlag) { | 
					
						
							|  |  |  |             //不可用态 | 
					
						
							|  |  |  |             SpriteList[3] = Yosin_EmeStretch(0, 0, W, H, Path, Idx + 12, Direction); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function ChangeFrame() { | 
					
						
							|  |  |  |         //状态更改 刷新精灵帧 | 
					
						
							|  |  |  |         if (State != SpriteState) { | 
					
						
							|  |  |  |             //按下时模拟偏移的Flag 如果按下 调整Y坐标向下一个单位 | 
					
						
							|  |  |  |             if (DownSimulateOffset) { | 
					
						
							|  |  |  |                 if (State == 2) { | 
					
						
							|  |  |  |                     Y += 1; | 
					
						
							|  |  |  |                     SyncPos(X, Y); | 
					
						
							|  |  |  |                 } else if (SpriteState == 2) { | 
					
						
							|  |  |  |                     Y -= 1; | 
					
						
							|  |  |  |                     SyncPos(X, Y); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if (SpriteState != -1) { | 
					
						
							|  |  |  |                 RemoveUIChild(SpriteList[SpriteState]); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             SpriteState = State; | 
					
						
							|  |  |  |             AddUIChild(SpriteList[SpriteState]); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function Proc(Dt) { | 
					
						
							|  |  |  |         //不可用 | 
					
						
							|  |  |  |         if (State == 3) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             //按下 | 
					
						
							|  |  |  |             if (isLBDown) { | 
					
						
							|  |  |  |                 State = 2; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             //悬停 | 
					
						
							|  |  |  |             else if (isInRect) { | 
					
						
							|  |  |  |                 State = 1; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             //普通 | 
					
						
							|  |  |  |             else { | 
					
						
							|  |  |  |                 State = 0; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         ChangeFrame(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  | } |