PANEL:PerformLayout

  PANEL:PerformLayout( number width, number height )

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

1 (Gülüşmeler) Numarası genişlik
Panellerin akım genişliği.
- 2 Numarası yüksekliği
Panellerin akım yüksekliği.

Ö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