1 添加 右侧和底部 坐标的获取方法

2 修复九个拉伸的问题
This commit is contained in:
WONIU 2024-12-27 15:29:08 +08:00
parent 1ba488b11c
commit d2a5b4cda4
4 changed files with 116 additions and 35 deletions

View File

@ -142,6 +142,15 @@ class CL_BaseObject {
function GetSize() { function GetSize() {
return BaseObject_GetSize(this.C_Object); return BaseObject_GetSize(this.C_Object);
} }
//获取右侧的坐标
function right() {
return X + GetSize().w;
}
//获取底部的坐标
function bottom() {
return Y + GetSize().h;
}
//获取缩放后的大小 //获取缩放后的大小
function GetScaledSize() { function GetScaledSize() {
return BaseObject_GetScaledSize(this.C_Object); return BaseObject_GetScaledSize(this.C_Object);

View File

@ -144,6 +144,22 @@ class Yosin_BaseWindow extends Layer {
base.SetVisible(Flag); base.SetVisible(Flag);
} }
/*
* @函数作用: 获取窗口右侧的坐标
*/
function right() {
return X + Width;
}
/*
* @函数作用: 获取窗口底部的坐标
*/
function bottom() {
return Y + Height;
}
/* /*
* @函数作用: 添加子对象 * @函数作用: 添加子对象
* @参数 name * @参数 name

View File

@ -209,71 +209,79 @@ class Yosin_NineBoxStretch extends Yosin_CommonUi {
// 绘制 // 绘制
function DrawBackground(width, height, path, imgId) { function DrawBackground(width, height, path, imgId) {
local x = 0;
local y = 0;
// 左上角 // 左上角
local backgroundTopLeft = CL_SpriteObject(path, imgId); 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); local backgroundTop = CL_SpriteObject(path, imgId + 1);
backgroundTop.SetPosition(cornerWidth, y); // 右上角
local backgroundTopRight = CL_SpriteObject(path, imgId + 2);
// 左边
local backgroundLeft = CL_SpriteObject(path, imgId + 3);
// 中间
local backgroundCenter = CL_SpriteObject(path, imgId + 4);
// 右边
local backgroundRight = CL_SpriteObject(path, imgId + 5);
// 左下角
local backgroundBottomLeft = CL_SpriteObject(path, imgId + 6);
// 下边
local backgroundBottom = CL_SpriteObject(path, imgId + 7);
// 右下角
local backgroundBottomRight = CL_SpriteObject(path, imgId + 8);
// 左上角
backgroundTopLeft.SetPosition(0, 0);
Addchild(backgroundTopLeft);
// 中间图片大小
local centerImgSize = backgroundCenter.GetSize();
local centerImgWidth = centerImgSize.w;
local centerImgHeight = centerImgSize.h;
local centerWidth = width - backgroundTopLeft.GetSize().w - backgroundTopRight.GetSize().w;
local centerHeight = height - backgroundTopLeft.GetSize().h - backgroundBottomLeft.GetSize().h;
local scaleW = (centerWidth - 1).tofloat() / centerImgWidth.tofloat();
local scaleH = (centerHeight - 1).tofloat() / centerImgHeight.tofloat();
// 上边
backgroundTop.SetPosition(backgroundTopLeft.right() + 1, 0);
backgroundTop.SetScale(scaleW, 1); backgroundTop.SetScale(scaleW, 1);
Addchild(backgroundTop); Addchild(backgroundTop);
// 右上角 // 右上角
local backgroundTopRight = CL_SpriteObject(path, imgId + 2); backgroundTopRight.SetPosition(width - backgroundTopRight.GetSize().w, 0);
backgroundTopRight.SetPosition(width - cornerWidth, y);
Addchild(backgroundTopRight); Addchild(backgroundTopRight);
// 左边 // 左边
local backgroundLeft = CL_SpriteObject(path, imgId + 3); local backgroundLeft = CL_SpriteObject(path, imgId + 3);
backgroundLeft.SetPosition(x, y + cornerHeight); backgroundLeft.SetPosition(0, backgroundTopLeft.bottom() + 1);
backgroundLeft.SetScale(1, scaleH); backgroundLeft.SetScale(1, scaleH);
Addchild(backgroundLeft); Addchild(backgroundLeft);
// 中间 // 中间
backgroundCenter.SetPosition(backgroundLeft.right() + 1, backgroundLeft.Y);
backgroundCenter.SetScale(scaleW, scaleH); backgroundCenter.SetScale(scaleW, scaleH);
Addchild(backgroundCenter);
// 右边 // 右边
local backgroundRight = CL_SpriteObject(path, imgId + 5); backgroundRight.SetPosition(width - backgroundRight.GetSize().w, backgroundCenter.Y);
backgroundRight.SetPosition(width - cornerWidth, y + cornerHeight);
backgroundRight.SetScale(1, scaleH); backgroundRight.SetScale(1, scaleH);
Addchild(backgroundRight); Addchild(backgroundRight);
// 左下角 // 左下角
local backgroundBottomLeft = CL_SpriteObject(path, imgId + 6); backgroundBottomLeft.SetPosition(0, height - backgroundBottomLeft.GetSize().h);
backgroundBottomLeft.SetPosition(x, height - cornerHeight);
Addchild(backgroundBottomLeft); Addchild(backgroundBottomLeft);
// 下边 // 下边
local backgroundBottom = CL_SpriteObject(path, imgId + 7); backgroundBottom.SetPosition(backgroundBottomLeft.right() + 1, backgroundBottomLeft.Y);
backgroundBottom.SetPosition(cornerWidth, height - cornerHeight);
backgroundBottom.SetScale(scaleW, 1); backgroundBottom.SetScale(scaleW, 1);
Addchild(backgroundBottom); Addchild(backgroundBottom);
// 右下角 // 右下角
local backgroundBottomRight = CL_SpriteObject(path, imgId + 8); backgroundBottomRight.SetPosition(width - backgroundBottomRight.GetSize().w, backgroundBottomLeft.Y);
backgroundBottomRight.SetPosition(width - cornerWidth, height - cornerHeight);
Addchild(backgroundBottomRight); Addchild(backgroundBottomRight);
} }
@ -357,4 +365,47 @@ class Yosin_SplicingButton extends Yosin_CommonUi {
} }
ChangeFrame(); ChangeFrame();
} }
}
// 窗口顶部标题
class Yosin_TopTitle extends Yosin_CommonUi {
constructor(W, H, title, drawBackground = true) {
base.constructor(0, 0, W, H);
//内容背景
if (drawBackground){
local background = Yosin_NineBoxStretch(-1, 15, W + 1, H - 15, "sprite/interface/lenheartwindowcommon.img", 97);
AddUIChild(background);
}
// 标题背景
local Background = Yosin_EmeStretch(0, 0, W, 22, "sprite/interface/lenheartwindowcommon.img", 609);
Addchild(Background);
// 标题亮色背景
local BackgroundBright = CL_SpriteObject("sprite/interface/lenheartwindowcommon.img", 483);
local scaleW = (W / BackgroundBright.GetSize().w).tofloat();
BackgroundBright.SetScale( scaleW , 1);
Addchild(BackgroundBright);
// 标题
local titleTextActor = FontAssetManager.GenerateNormal(title, true, {
color = sq_RGBA(206, 189, 140, 255),
alignment = TextAlign.Center,
});
local titleX = W / 2 - titleTextActor.GetSize().w / 2;
// 绘制标题
titleTextActor.SetPosition(titleX, 2);
Addchild(titleTextActor);
}
} }

View File

@ -73,7 +73,7 @@ class _Yosin_MessageBox extends Yosin_Window {
function RegisterWidget() { function RegisterWidget() {
//背景 //背景
local background = Yosin_NineBoxStretch(-1, 15, cacheW + 2, cacheH, "sprite/interface/lenheartwindowcommon.img", 97); local background = Yosin_NineBoxStretch(-1, 15, cacheW + 1, cacheH, "sprite/interface/lenheartwindowcommon.img", 97);
AddUIChild(background); AddUIChild(background);
local twoBackground = Yosin_NineBoxStretch(4, 20, cacheW - 8, cacheH - 36, "sprite/interface/lenheartwindowcommon.img", 97); local twoBackground = Yosin_NineBoxStretch(4, 20, cacheW - 8, cacheH - 36, "sprite/interface/lenheartwindowcommon.img", 97);
AddUIChild(twoBackground); AddUIChild(twoBackground);
@ -82,6 +82,11 @@ class _Yosin_MessageBox extends Yosin_Window {
local titleBackground = Yosin_EmeStretch(0, 0, cacheW, 20, "sprite/interface/lenheartwindowcommon.img", 609); local titleBackground = Yosin_EmeStretch(0, 0, cacheW, 20, "sprite/interface/lenheartwindowcommon.img", 609);
AddUIChild(titleBackground); AddUIChild(titleBackground);
local BackgroundBright = CL_SpriteObject("sprite/interface/lenheartwindowcommon.img", 483);
local scaleW = (cacheW / BackgroundBright.GetSize().w).tofloat();
BackgroundBright.SetScale( scaleW , 1);
Addchild(BackgroundBright);
//确认按钮 //确认按钮
local confirmButton = Yosin_BaseButton(cacheW / 2 - 28, cacheH - 15, 56, 24 "sprite/interface/lenheartwindowcommon.img", 12); local confirmButton = Yosin_BaseButton(cacheW / 2 - 28, cacheH - 15, 56, 24 "sprite/interface/lenheartwindowcommon.img", 12);
confirmButton.OnClick = function(Button) { confirmButton.OnClick = function(Button) {