/* 文件名:6_PlayerChat.nut 路径:User/UI/Window/6_PlayerChat.nut 创建日期:2025-01-20 18:03 文件用途: */ //主类 class _PlayerChat extends Yosin_Window { //是否为顶层窗口 IsTop = true; constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); local background = PlayerChat_Backgournd(); Addchild(background); RegisterWidget(); } function RegisterWidget() { // 普通 local ordinary = PlayerChat_SplicingButton(6, 206, 53, 20, 8, "普通", sq_RGBA(255, 255, 255, 255)); AddUIChild(ordinary); ordinary.LBDownOnClick = function(btn) { print(111); } ordinary.OnTriangleClick = function(btn) { print(222); } // 公会 local notice = PlayerChat_SplicingButton(60, 206, 53, 20, 47, "公会", sq_RGBA(254, 77, 245, 255)); AddUIChild(notice); notice.LBDownOnClick = function(btn) { print(111); } notice.OnTriangleClick = function(btn) { print(222); } // 频道 local channel = PlayerChat_SplicingButton(114, 206, 53, 20, 48, "频道", sq_RGBA(221, 153, 197, 255)); AddUIChild(channel); channel.LBDownOnClick = function(btn) { print(111); } channel.OnTriangleClick = function(btn) { print(222); } // 募集 local raise = PlayerChat_SplicingButton(168, 206, 53, 20, 49, "募集", sq_RGBA(105, 212, 238, 255)); AddUIChild(raise); raise.LBDownOnClick = function(btn) { print(111); } raise.OnTriangleClick = function(btn) { print(222); } } //逻辑入口 function Proc(Dt) { SyncPos(X, Y); base.Proc(Dt); } } // 背景 class PlayerChat_Backgournd extends CL_CanvasObject { constructor() { base.constructor(); DrawBackground(); } // 绘制背景 function DrawBackground() { // 创建画布 CL_CanvasObject(); // 重设大小并清空 ResizeAndClear(332, 600); // 开始绘制 BeginDraw(); local topLine = CL_SpriteFrameObject("sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 159); DrawSpriteFrame(topLine, 0, 0); local topBg = CL_SpriteObject("sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 160); topBg.SetPosition(0, 2); topBg.SetScale(1, 28); DrawSprite(topBg); local bimg = CL_SpriteFrameObject("sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 161); DrawSpriteFrame(bimg, 0, 30); local bottomBg = CL_SpriteObject("sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 162); bottomBg.SetPosition(0, 561); bottomBg.SetScale(1, 38); DrawSprite(bottomBg); local bottomLine = CL_SpriteFrameObject("sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 163); DrawSpriteFrame(bottomLine, 0, 598); // 系统按钮 local systemBtnBackground = Yosin_EmeStretch(53, 21, "sprite/interface/lenheartwindowcommon.img", 166); DrawSprite(systemBtnBackground, 6, 15); local systemText = FontAssetManager.GenerateNormal("系统", true, { color = sq_RGBA(200, 173, 134, 255) }); DrawActor(systemText, 18, 18); // 系统 local SystemBround = Yosin_NineBoxStretch(321, 72, "sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 265); DrawSprite(SystemBround, 6, 35); // 喇叭按钮 local megaphoneBtnBackground = Yosin_EmeStretch(53, 21, "sprite/interface/lenheartwindowcommon.img", 166); DrawSprite(megaphoneBtnBackground, 6, 109); // 喇叭 local megaphoneext = FontAssetManager.GenerateNormal("喇叭", true, { color = sq_RGBA(255, 239, 1, 255) }); DrawActor(megaphoneext, 18, 112); // 喇叭 local megaphoneBround = Yosin_NineBoxStretch(321, 72, "sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 265); DrawSprite(megaphoneBround, 6, 130); // 消息 local PlayerChatBround = Yosin_NineBoxStretch(321, 345, "sprite/interface/newstyle/windows/chatting/chatting_ver4.img", 265); DrawSprite(PlayerChatBround, 6, 225); // 结束绘制 EndDraw(); } } // 消息分类按钮 class PlayerChat_SplicingButton extends Yosin_CommonUi { //按钮状态 State = 0; Sprite = null; SpriteState = -1; FrameList = null; select = false; cacheY = null; LBDownOnClick = null; OnTriangleClick = null; constructor(X, Y, W, H, Idx, title, titleColor) { base.constructor(X, Y, W, H); cacheY = Y; FrameList = []; Sprite = CL_SpriteObject(); Addchild(Sprite); for (local i = 0; i< 3; i++) { local canvas = Yosin_EmeStretch(W, H, "sprite/interface/lenheartwindowcommon.img", 160 + i * 3); local Sf = canvas.ExportSpriteFrame(); FrameList.push(Sf); } // 文字 local Text = FontAssetManager.GenerateNormal(title, true, { color = titleColor }); Text.SetPosition(12, 1); Addchild(Text); // 三角 local triangle = CL_SpriteObject("sprite/interface/newstyle/windows/chatting/chatting_new.img", Idx); triangle.SetPosition(W - 15, 8); Addchild(triangle); // 按钮 local bigButton = Yosin_BaseButton(0, 0, W - 15, H, "sprite/interface/lenheartwindowcommon.img", 70); AddUIChild(bigButton); bigButton.OnClick = function(btn) { if (LBDownOnClick) { LBDownOnClick(this); }; }.bindenv(this); // 三角按钮 local triangleButton = Yosin_BaseButton(W - 15, 0, 15, H, "sprite/interface/lenheartwindowcommon.img", 70); AddUIChild(triangleButton); triangleButton.OnClick = function(btn) { if (OnTriangleClick) { OnTriangleClick(this); }; }.bindenv(this); } function ChangeFrame() { //状态更改 刷新精灵帧 if (State != SpriteState) { if (State == 2) { Y = cacheY - 1; SyncPos(X, Y); } else if (SpriteState == 2) { Y = cacheY; SyncPos(X, Y); } SpriteState = State; Sprite.SetFrame(FrameList[SpriteState]); Sprite.SetPosition(0, 0); } } function Proc(Dt) { if (select) return; //不可用 if (State == 3) { } else { //按下 if (isLBDown) { State = 2; select = true; } //悬停 else if (isInRect) { State = 1; } //普通 else { State = 0; } } ChangeFrame(); } }