diff --git a/sqr/Core/UI_Class/UI_Widget.nut b/sqr/Core/UI_Class/UI_Widget.nut index 5d47d0c..73ed082 100644 --- a/sqr/Core/UI_Class/UI_Widget.nut +++ b/sqr/Core/UI_Class/UI_Widget.nut @@ -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 { //按钮状态