PANEL:PerformLayout
Açıklama
Panellerin yeniden düzenlenmesi gerektiğinde çağrılır. Bu, tüm çocuk panellerinin bu panelin olası yeni boyutuna uyum sağlamak için yeniden konumlandırılması gerektiği anlamına gelir.
Bu, çeşitli yollarla tetiklenebilir:
- Panel:InvalidateLayoutBu ya da önceki çerçeve olarak adlandırıldı (argümanına bağlı olarak)
- Panel:SetPosAynı panelde birden fazla kez çağrıldı (Çıkış)
- Bu panelye bir çocuk elemanı eklendi (TODO: Verify me)
- Bu panelin boyutu değişti .
Buna function directly demeyin. Kullan Panel:InvalidateLayoutBunun yerine.
Ayrıca düzenleme döngüslerine neden olmamak için de dikkatli olmalısınız.vgui_visualizelayout 1Panel düzenlerini debugging amaçlı görselleştirmek için. paneller performans nedenleri için bunu her çerçeve yapmamalıdır.
Argümanlar
Örnek
DFrame ile birlikte yeniden ölçeklendirilecek bir ' yan çubuğu' ile büyüklüğünü değiştirilebilir bir Dframe oluşturmak
local frame = vgui.Create("DFrame")
frame:SetSize(500, 400)
frame:Center()
frame:SetSizable(true)
-- oPerformLayout orijinal PerformL layout fonksiyonunu saklar
- Onu saklıyoruz çünkü yan çubuğu boyutlandırmak için kendi ile yazmaya gidiyoruz.
-- Daha sonra orijinal function to diyoruz çerçevenin uygun işlevini korumak
-- Orijinal PerformLayout'u buradan bulabilirsiniz https://github.com/Facepunch/garrysmod/blob/master/garriesmod/lua/vgui/[ID=1]#L234-L258
local oPerformLayout = frame.PerformLayout
frame.PerformLayout = function(pnl, w, h)
oPerformLayout(pnl, w, h)
pnl.Sidebar:SetWide(w * 0.5)
end
frame.Sidebar = frame:Add("DPanel")
frame.Sidebar:Dock(LEFT)
frame.Sidebar.Paint = function(pnl, w, h)
surface.SetDrawColor(255, 0, 0)
surface.DrawRect(0, 0, w, h)
end
frame.Sidebar.PerformLayout = function(pnl, w, h)
local buttonWidth = w * 0.5
local buttonHeight = h * 0.5
pnl.Button:SetSize(buttonWidth, buttonHeight)
Şimdi düğmeye odaklanıyoruz.
pnl.Button:SetPos(w / 2 - buttonWidth / 2, h / 2 - buttonHeight / 2)
end
frame.Sidebar.Button = frame.Sidebar:Add("DButton")
frame.Sidebar.Button:SetText("Hello!")
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord