148 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:233_HUD_Message.nut
 | |
| 路径:User/UI/Window/233_HUD_Message.nut
 | |
| 创建日期:2024-12-14	08:10
 | |
| 文件用途: 公告或信息弹窗
 | |
| */
 | |
| 
 | |
| class _Yosin_MessageBox extends Yosin_Window {
 | |
|     //调试模式
 | |
|     // DeBugMode = true;
 | |
| 
 | |
|     //不是窗口
 | |
|     // NoWindow = true;
 | |
| 
 | |
|     //是否可见
 | |
|     // Visible = false;
 | |
| 
 | |
|     BackGroundMusic = null;
 | |
| 
 | |
|     cacheW = 230;
 | |
|     cacheH = 155;
 | |
| 
 | |
|     titleTextActor = null;
 | |
|     messageTextActor = null;
 | |
| 
 | |
|     constructor(message, gX = 418, gY = 200, info = {
 | |
|         // 标题
 | |
|         title = "公告",
 | |
|         // 水平边距
 | |
|         horizontalMargin = 20,
 | |
|         // 垂直边距
 | |
|         verticalMargin = 20,
 | |
|     }) {
 | |
| 
 | |
|         local title = info.rawin("title") ? info.title : "公告";
 | |
|         local horizontalMargin = info.rawin("horizontalMargin") ? info.horizontalMargin : 20;
 | |
|         local verticalMargin = info.rawin("verticalMargin") ? info.verticalMargin : 20;
 | |
| 
 | |
|         // 标题
 | |
|         titleTextActor = FontAssetManager.GenerateNormal(title, true, {
 | |
|             color = sq_RGBA(206, 189, 140, 255),
 | |
|             alignment = TextAlign.Center,
 | |
|         });
 | |
| 
 | |
|         // 标题动态宽度
 | |
|         if (titleTextActor.GetSize().w > cacheW - 40) {
 | |
|             cacheW = titleTextActor.GetSize().w + 40;
 | |
|         }
 | |
| 
 | |
| 
 | |
|         // 内容
 | |
|         messageTextActor = FontAssetManager.GenerateNormal(message, false, {
 | |
|             color = sq_RGBA(206, 189, 140, 255),
 | |
|             alignment = TextAlign.Center,
 | |
|             wrap_width = cacheW - horizontalMargin * 2,
 | |
|         });
 | |
| 
 | |
|         //  内容动态高度
 | |
|         local verticalMargin = 50 + verticalMargin * 2;
 | |
|         cacheH = messageTextActor.GetSize().h + verticalMargin;
 | |
| 
 | |
|         // 默认构造数据
 | |
|         base.constructor("公告或信息弹窗" + clock().tostring(), gX ? gX : 418, gY ? gY : 200, cacheW, cacheH, 20);
 | |
| 
 | |
| 
 | |
|         //注册控件
 | |
|         RegisterWidget();
 | |
|         //注册绘制
 | |
|         RegisterDraw();
 | |
| 
 | |
|         ResetFocus();
 | |
|     }
 | |
| 
 | |
|     function RegisterWidget() {
 | |
| 
 | |
|         //背景
 | |
|         local background = Yosin_NineBoxStretch( cacheW + 1, cacheH, "sprite/interface/lenheartwindowcommon.img", 97);
 | |
|         background.SetPosition(-1, 15);
 | |
|         Addchild(background);
 | |
| 
 | |
|         //文字背景
 | |
|         local twoBackground = Yosin_NineBoxStretch( cacheW - 8, cacheH - 36, "sprite/interface/lenheartwindowcommon.img", 97);
 | |
|         twoBackground.SetPosition(4, 20);
 | |
|         Addchild(twoBackground);
 | |
| 
 | |
|         // 绘制标题背景
 | |
|         local titleBackground = Yosin_EmeStretch(cacheW, 20, "sprite/interface/lenheartwindowcommon.img", 609);
 | |
|         titleBackground.SetScale(1, 1.2);
 | |
|         Addchild(titleBackground);
 | |
| 
 | |
|         // 标题背景光
 | |
|         local BackgroundBright = CL_SpriteObject("sprite/interface/lenheartwindowcommon.img", 483);
 | |
|         local BackgroundBrightSize = BackgroundBright.GetSize();
 | |
|         local scaleW = (cacheW / BackgroundBrightSize.w).tofloat();
 | |
|         BackgroundBright.SetScale(scaleW, 1);
 | |
|         BackgroundBright.SetPosition( 0, 1);
 | |
|         Addchild(BackgroundBright);
 | |
| 
 | |
|         //确认按钮
 | |
|         local confirmButton = Yosin_BaseButton(cacheW / 2 - 28, cacheH - 15, 56, 24 "sprite/interface/lenheartwindowcommon.img", 12);
 | |
|         confirmButton.OnClick = function(Button) {
 | |
|             //关闭本窗口
 | |
|             DestroyWindow();
 | |
|         }.bindenv(this);
 | |
|         AddUIChild(confirmButton);
 | |
| 
 | |
|         // 绘制标题
 | |
|         local confirmTextActor = FontAssetManager.GenerateNormal("确认", sq_RGBA(206, 189, 140, 255), true);
 | |
|         confirmTextActor.SetPosition(17, 6);
 | |
|         confirmButton.Addchild(confirmTextActor);
 | |
| 
 | |
|         //关闭按钮
 | |
|         local closeButton = Yosin_BaseButton(cacheW - 15, 5, 10, 9 "sprite/interface/lenheartwindowcommon.img", 42);
 | |
|         closeButton.OnClick = function(Button) {
 | |
|             //关闭本窗口
 | |
|             DestroyWindow();
 | |
|         }.bindenv(this);
 | |
|         AddUIChild(closeButton);
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     function RegisterDraw() {
 | |
| 
 | |
|         local titleX = cacheW / 2 - titleTextActor.GetSize().w / 2;
 | |
|         // 绘制标题
 | |
|         titleTextActor.SetPosition(titleX, 2);
 | |
|         Addchild(titleTextActor);
 | |
| 
 | |
| 
 | |
|         local messageX = cacheW / 2 - messageTextActor.GetSize().w / 2;
 | |
|         local messageY = cacheH / 2 - messageTextActor.GetSize().h / 2;
 | |
| 
 | |
|         // 绘制内容
 | |
|         messageTextActor.SetPosition(messageX, messageY);
 | |
|         Addchild(messageTextActor);
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //逻辑入口
 | |
|     function Proc(Dt) {
 | |
| 
 | |
|         SyncPos(X, Y);
 | |
|         base.Proc(Dt);
 | |
|     }
 | |
| 
 | |
| } |