/* 文件名:1_Select_Character.nut 路径:User/UI/Window/1_Select_Character.nut 创建日期:2024-12-13 15:45 文件用途:选择角色界面窗口 */ class _Select_Character_SettingBackground_Object_Window extends Yosin_CommonUi { //编号 Idx = 0; //蓝色悬停框 RectMask = null; //黄色选中框 SelectMask = null; //选中状态 SelectFlag = false; constructor(x, y, width, height, gIdx) { base.constructor(x, y, width, height); //编号 Idx = gIdx; //注册绘制 RegisterDraw(); } function RegisterDraw() { //背景 local Background = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/small/background_small_event.img", Idx); Background.SetScale(0.7, 0.7); Addchild(Background); RectMask = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/setup/setup.img", 18); RectMask.SetVisible(false); Addchild(RectMask); SelectMask = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/setup/setup.img", 19); SelectMask.SetPosition(-2, -2); SelectMask.SetVisible(false); Addchild(SelectMask); } //override function Proc(Dt) { base.Proc(Dt); if (isInRect && !SelectFlag) { RectMask.SetVisible(true); } else { RectMask.SetVisible(false); } } //鼠标左键单击回调 function OnMouseLbClick(MousePos_X, MousePos_Y) { base.OnMouseLbClick(MousePos_X, MousePos_Y); if (isInRect) { //遍历父对象中的所有按钮 还原其他按钮 foreach(Button in Parent.SettingBackgroundButtonList) { Button.SelectMask.SetVisible(false); Button.SelectFlag = false; } //设置自身选中状态 SelectMask.SetVisible(true); SelectFlag = true; Parent.Parent.ChangeBackground(Idx); } } } class _Select_Character_SettingBackground_Window extends Yosin_Window { //是否为独立窗口 IsIndependent = false; //是否可见 Visible = false; //选择背景按钮集合 SettingBackgroundButtonList = null; Background = null; constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); SettingBackgroundButtonList = []; // SetClipRect(-gWidth, 0, gWidth, gHeight + 20); // SetClipRect(0, 0, 1066, 600); // ShowBorder(true); // SetLayerOpacity(1); } function Init() { //注册绘制 RegisterDraw(); } function RegisterDraw() { //背景 Background = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/setup/setup.img", 17); Addchild(Background); for (local i = 0; i< 24; i++) { local Buf = _Select_Character_SettingBackground_Object_Window(5 + (101 * (i % 2)), 9 + (61 * (i / 2)), 91, 51, i); SettingBackgroundButtonList.push(Buf); //如果是父对象默认构造的默认是勾选状态 if (i == Parent.Info.Background) { Buf.SelectMask.SetVisible(true); Buf.SelectFlag = true; } AddUIChild(Buf); } } //逻辑入口 function Proc(Dt) { SyncPos(X, Y); base.Proc(Dt); } } class _Select_Character_Window extends Yosin_Window { //调试模式 // DeBugMode = true; //不是窗口 // NoWindow = true; //是否可见 // Visible = false; //背景音乐 BackGroundMusic = null //设置背景图片窗口 SettingBackgroundWindow = null; //背景图片 BackGround = null; //信息 Info = null; constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { base.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); } function Init(gInfo) { //接收参数信息 Info = gInfo; //注册绘制 RegisterDraw(); //注册控件 RegisterWidget(); //注册窗口 RegisterWindow(); // OpenDeBug(); //播放音乐 PlayBackgroundMusic(); } function PlayBackgroundMusic() { // BackGroundMusic = Sound("SoundPacks/Loop.ogg"); // BackGroundMusic.Play(); } function MusicLogic() { if (BackGroundMusic == null) return; if (!BackGroundMusic.IsPlaying()) BackGroundMusic.Play(); } function RegisterWindow() { SettingBackgroundWindow = _Select_Character_SettingBackground_Window("选择角色_设置背景图片窗口", 850, 28, 212, 129, 0); AddUIChild(SettingBackgroundWindow); //先添加为子对象 因为子对象需要用到父对象 SettingBackgroundWindow.Init(); } function RegisterWidget() { //背景设置按钮 local SettingButton = Yosin_BaseButton(984, 6, 77, 24 "sprite/interface2/ui/community/guild_2019/guildsetting/guildsetting.img", 29); //点击事件回调 SettingButton.OnClick = function(Button) { SettingBackgroundWindow.SetVisible(!SettingBackgroundWindow.Visible) }.bindenv(this); AddUIChild(SettingButton); //登录按钮文本 local LoginTextActor = FontAssetManager.GenerateNormal("背景设置", sq_RGBA(221, 197, 147, 255), true); LoginTextActor.SetPosition(23, 3); LoginTextActor.SetUpdateFunc(function(Text, Dt) { if (Text.Parent.State == 1 || Text.Parent.State == 2) { Text.SetFillColor(sq_RGBA(255, 255, 184, 255)); } else if (Text.Parent.State == 0) { Text.SetFillColor(sq_RGBA(221, 197, 147, 255)); } }) SettingButton.Addchild(LoginTextActor); // local TestButton = Yosin_ScrollBar(300, 200, 50, 100); // AddUIChild(TestButton); // local TestButton = Yosin_SplicingButton(200, 200, 77, 68, "sprite/interface/lenheartwindowcommon.img", 184, false, false); // TestButton.DownSimulateOffset = false; local TestButton = Yosin_DragButton(200, 200, 9, 120, "sprite/interface/lenheartwindowcommon.img", 184, false, false); // TestButton.SetScale(5.0, 5.0); AddUIChild(TestButton); } //切换背景 function ChangeBackground(Idx) { if (BackGround) { BackGround.RemoveSelf(); BackGround = null; } BackGround = CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/large/background_large_event.img", Idx); BackGround.SetZOrder(-10); /* BackGround = Layer(); BackGround.Addchild(CL_SpriteObject("sprite/interface2/selectcharacter_ver2/background/large/background_large_event.img", Idx)); BackGround.SetZOrder(-10); BackGround.SetPosition(100, 100); BackGround.SetClipRect(0, 0, 200, 200); */ Addchild(BackGround); } function RegisterDraw() { //大背景 根据玩家的设定背景决定 ChangeBackground(Info.Background); } //逻辑入口 function Proc(Dt) { MusicLogic(); SyncPos(X, Y); base.Proc(Dt); } }