Compare commits

...

3 Commits

Author SHA1 Message Date
WONIU c7dfe7c994 公告消息弹窗(动态大小) 2024-12-14 22:22:42 +08:00
WONIU 68068e79ff 九宫格拉伸 2024-12-14 22:20:37 +08:00
Lenheart a10e96e83b 更新GenerateNormal 文字的 参数
(cherry picked from commit f430d6af41)
2024-12-14 21:32:30 +08:00
5 changed files with 227 additions and 4 deletions

View File

@ -185,6 +185,94 @@ class Yosin_EmeStretch extends Yosin_CommonUi {
}
}
//九宫格拉伸
class Yosin_NineBoxStretch extends Yosin_CommonUi {
constructor(X, Y, W, H, Path, Idx) {
base.constructor(X, Y, W, H);
DrawBackground( W, H, Path, Idx);
}
// 绘制
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);
backgroundLeft.SetPosition(x, y + cornerHeight );
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);
backgroundBottom.SetScale( scaleW , 1);
Addchild(backgroundBottom);
// 右下角
local backgroundBottomRight = CL_SpriteObject(path, imgId + 8);
backgroundBottomRight.SetPosition(width - cornerWidth, height - cornerHeight);
Addchild(backgroundBottomRight);
}
}
//拼接按钮
class Yosin_SplicingButton extends Yosin_CommonUi {
//按钮状态

View File

@ -66,5 +66,6 @@ sqr/User/UI/Widget/Scroll_Bar.nut
sqr/User/UI/Window/0_Login.nut
sqr/User/UI/Window/1_Select_Character.nut
sqr/User/UI/Window/233_HUD_Message.nut
sqr/User/main.nut

View File

@ -23,11 +23,9 @@ class _FontAssetManager_ {
}
//生成普通宋体小字
function GenerateNormal(text, rgba, stroke) {
function GenerateNormal(text, stroke, style = {}) {
//登录按钮文本
local TextActor = TextActor(0, {
color = rgba
});
local TextActor = TextActor(0, style);
TextActor.SetText(text);
if (stroke)
TextActor.SetOutline(3.0);

View File

@ -0,0 +1,133 @@
/*
文件名:233_HUD_Message.nut
路径:User/UI/Window/233_HUD_Message.nut
创建日期:2024-12-14 08:10
文件用途: 公告或信息弹窗
*/
class HUD_Message extends Yosin_Window {
//调试模式
// DeBugMode = true;
//不是窗口
// NoWindow = true;
//是否可见
// Visible = false;
BackGroundMusic = null;
cacheW = 230;
cacheH = 155;
titleTextActor = null;
messageTextActor = null;
constructor(gX, gY, message, 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;
print("cacheW:" + cacheW.tostring());
print("cacheH:" + cacheH.tostring());
// 默认构造数据
base.constructor("公告或信息弹窗" + clock().tostring() , gX, gY, cacheW, cacheH, 20);
//注册控件
RegisterWidget();
//注册绘制
RegisterDraw();
}
function RegisterWidget() {
//背景
local background = Yosin_NineBoxStretch(-1, 15, cacheW + 2, cacheH, "sprite/interface/lenheartwindowcommon.img", 97);
AddUIChild(background);
local twoBackground = Yosin_NineBoxStretch(4, 20, cacheW - 8, cacheH - 36, "sprite/interface/lenheartwindowcommon.img", 97);
AddUIChild(twoBackground);
// 绘制标题背景
local titleBackground = Yosin_EmeStretch(0, 0, cacheW, 20, "sprite/interface/lenheartwindowcommon.img", 609);
AddUIChild(titleBackground);
//确认按钮
local confirmButton = Yosin_BaseButton( cacheW / 2 - 28, cacheH - 15, 56, 24 "sprite/interface/lenheartwindowcommon.img", 12);
confirmButton.OnClick = function(Button) {
this.RemoveSelf();
}.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) {
this.RemoveSelf();
}.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);
}
}

View File

@ -169,5 +169,8 @@
},
"User/UI/Widget/Drag_Button.nut": {
"description": "拖动按钮"
},
"User/UI/Window/233_HUD_Message.nut": {
"description": "公告弹窗"
}
}