九宫格拉伸

(cherry picked from commit 68068e79ff)
This commit is contained in:
WONIU 2024-12-14 22:20:37 +08:00 committed by Lenheart
parent eeaeff06ce
commit 7d5a49862c
1 changed files with 88 additions and 0 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 {
//按钮状态