【发布时间】:2020-08-13 23:56:10
【问题描述】:
我相信 Garry's Mod 的 DCollapsibleCategory 派生自 Panel,因此我尝试创建自定义 vgui 元素,以便添加 function PANEL:OnMousePressed(keyCode),但这完全改变了它在我的记分板上的绘制方式。
这是自定义 vgui 元素的代码,也许我错过了什么:
local PANEL = {}
AccessorFunc(PANEL, "hiddenPanel", "HiddenPanel")
function PANEL:Init()
self.dataPanel = vgui.Create("DCollapsibleCategory", self)
self.dataPanel:SetExpanded(0)
self.dataPanel:SetLabel('')
self.dataPanel:GetChildren()[1]:SetTall(45)
self.dataPanel.Paint = function(pnl, w, h)
draw.RoundedBox(0, 0, 0, w, h, Advocate_Scoreboard.Colors.BASE_HEADER)
end
self.hiddenList = vgui.Create("DPanelList", self.dataPanel)
self.hiddenList:SetSpacing(1)
self.dataPanel:SetContents(self.hiddenList)
self.hiddenPanel = vgui.Create("DPanel", self.hiddenList)
self.hiddenList:AddItem(self.hiddenPanel)
self.hiddenPanel.Paint = function(pnl, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(50, 50, 50))
end
end
function PANEL:PerformLayout()
self.dataPanel:SetSize(self:GetWide(), self:GetTall())
self.dataPanel:GetChildren()[1]:SetTall(45)
self.hiddenList:SetSize(self.dataPanel:GetWide(), self.dataPanel:GetTall())
self.hiddenPanel:SetSize(self.hiddenList:GetWide(), 39)
end
function PANEL:OnMousePressed(keyCode)
print(keyCode)
end
vgui.Register("Advocate_Scoreboard.Row", PANEL)
DCollapsibleCategory 不响应任何 .DoClick 函数 - 我不相信它们中的任何方法都来自 Panel。
【问题讨论】:
标签: lua garrys-mod