ImageButton

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Ein ImageButton verhält sich ähnlich wie ein ImageLabel in Bezug auf die Rendering mit den zusätzlichen Verhaltensweisen eines GuiButton . Es definiert die gleichen Bild-Renderndereigenschaften wie ein ImageLabel .

Du kannst die Bild rendernd durch Setzen von ImageButton.ImageTransparency auf 1 deaktivieren. Dies wird ein einfaches Rechteck erzeugen, das als Button verwendet werden kann. jedoch, es ist möglicherweise besser, ein leeres TextButton für dies zu verwenden.

Code-Beispiele

ImageButton Press Color

-- Place this code in a LocalScript in an ImageButton
local imageButton = script.Parent
local colorNormal = Color3.new(1, 1, 1) -- white
local colorHover = Color3.new(0, 1, 0) -- green
local colorPress = Color3.new(1, 0, 0) -- red
-- This is a 32x32 image of a backpack
imageButton.Image = "rbxassetid://787458668"
imageButton.BackgroundTransparency = 1
local function onActivated()
print("open the inventory")
end
local function onPressed()
imageButton.ImageColor3 = colorPress
end
local function onReleased()
imageButton.ImageColor3 = colorHover
end
local function onEntered()
imageButton.ImageColor3 = colorHover
end
local function onLeft()
imageButton.ImageColor3 = colorNormal
end
imageButton.MouseEnter:Connect(onEntered)
imageButton.MouseLeave:Connect(onLeft)
imageButton.MouseButton1Down:Connect(onPressed)
imageButton.MouseButton1Up:Connect(onReleased)
imageButton.Activated:Connect(onActivated)
-- Start with the default, non-hovered state
onLeft()

Zusammenfassung

Eigenschaften

  • HoverImage:ContentId
    Parallel lesen

    Eine Textur-ID, die verwendet wird, wenn der ImageButton mit der Maus über ein Bereich gesetzt wird.

  • Image:ContentId
    Parallel lesen

    Der Bildinhalt, der vom UI-Element angezeigt wird.

  • Parallel lesen

    Bestimmt, wie eine gerendete Bild wird gefärbt.

  • Verborgen
    Parallel lesen
  • Parallel lesen

    Der Offset in Pixel der Unterseite eines Bildes, die angezeigt wird.

  • Parallel lesen

    Bestimmt die Größe in Pixel der Unterbereich eines Bildes, die angezeigt werden soll.

  • Bestimmt die Transparenz des gerenderten Bildes.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Zeigt an, ob das Bild fertig geladen wurde von der Roblox-Website.

  • PressedImage:ContentId
    Parallel lesen

    Eine Textur, die verwendet wird, wenn ein ImageButton gedrückt wird.

  • Wählt den Bild-Resammler-Modus für die Schaltfläche.

  • Bestimmt, wie ein Bild skaliert, wenn es in einem UI-Element angezeigt wird, dessen Größe vom Quellbild abweicht.

  • Parallel lesen

    Setzt die Schnittgrenzen eines 9-sliced-Bildes.

  • Parallel lesen

    Skaliert die 9-Slice-Kanten durch das angegebene Verhältnis.

  • Parallel lesen

    Setzt die Kachelgröße des Bild Buttons.

Eigenschaften von GuiButton übernommen
  • Parallel lesen

    Bestimmt, ob die Schaltfläche automatisch Farbe ändert, wenn die Maus darüber schwebt oder darauf klickt.

  • Parallel lesen

    Wenn wahr, während der GUI-Element sichtbar ist, wird die Maus nicht gesperrt, wenn der rechte Maustaste nicht abgestellt ist.

  • Parallel lesen

    EineBoolean-Eigenschaft, die anzeigt, ob das Objekt ausgewählt wurde.

  • Parallel lesen

    Setzt den Stil des GuiButton basierend auf einer Liste von vordefinierten Stilen.

Eigenschaften von GuiObject übernommenEigenschaften von GuiBase2d übernommen

Methoden

Methoden von GuiObject übernommen

Ereignisse

Ereignisse von GuiButton übernommenEreignisse von GuiObject übernommenEreignisse von GuiBase2d übernommen

Eigenschaften

HoverImage

ContentId
Parallel lesen

Eine Textur-ID, die verwendet wird, wenn der ImageButton mit der Maus über ein Bereich gesetzt wird.

Image

ContentId
Parallel lesen

Das Bild-Eigenschaft ist eine Inhalts-Typ-Eigenschaft, die die Asset-ID eines Decals oder Bildes auf der Roblox-Website enthalten sollte. Es funktioniert identisch zu Decal.Texture in Bezug auf das Laden des Bildes von der Roblox-Website. Das gerendierte Bild wird in der Farbe ange

Code-Beispiele

Image Hover Lock

local imageLabel = script.Parent
-- The images in this example are 64x64
imageLabel.Size = UDim2.new(0, 64, 0, 64)
local function unlock()
imageLabel.Image = "rbxassetid://284402785" -- Unlocked padlock (64x64)
imageLabel.ImageColor3 = Color3.new(0, 0.5, 0) -- Dark green
end
local function lock()
imageLabel.Image = "rbxassetid://284402752" -- Locked padlock (64x64)
imageLabel.ImageColor3 = Color3.new(0.5, 0, 0) -- Dark red
end
-- Connect events; our default state is locked
imageLabel.MouseEnter:Connect(unlock)
imageLabel.MouseLeave:Connect(lock)
lock()

ImageColor3

Parallel lesen

Die Bildfarbe3-Eigenschaft bestimmt, wie ein Bild gefärbt wird. Wenn sie auf Weiß gesetzt ist, keine Farbung. Diese Eigenschaft ist sehr nützlich für die Wiederverwendung von Bildern: Wenn die Quelle-Bilder komplett weiß mit Transparenz ist, können Sie die gesamte Farbe des Bildes mit dieser Eigenschaftenauf einmal festlegen.

Code-Beispiele

Image Hover Lock

local imageLabel = script.Parent
-- The images in this example are 64x64
imageLabel.Size = UDim2.new(0, 64, 0, 64)
local function unlock()
imageLabel.Image = "rbxassetid://284402785" -- Unlocked padlock (64x64)
imageLabel.ImageColor3 = Color3.new(0, 0.5, 0) -- Dark green
end
local function lock()
imageLabel.Image = "rbxassetid://284402752" -- Locked padlock (64x64)
imageLabel.ImageColor3 = Color3.new(0.5, 0, 0) -- Dark red
end
-- Connect events; our default state is locked
imageLabel.MouseEnter:Connect(unlock)
imageLabel.MouseLeave:Connect(lock)
lock()
Rainbow Image

local RunService = game:GetService("RunService")
local imageLabel = script.Parent
local function onRenderStep()
imageLabel.ImageColor3 = Color3.fromHSV(workspace.DistributedGameTime / 8 % 1, 1, 1)
end
RunService.RenderStepped:Connect(onRenderStep)

ImageContent

Verborgen
Parallel lesen

ImageRectOffset

Parallel lesen

Erlaubt die teilweise Anzeige eines Bildes in Zusammenarbeit mit ImageButton.ImageRectSize. Diese Eigenschaft bestimmt den Pixel-Offset (von der oberen linken Seite) des Bildbereichs, der angezeigt werden soll.

Dieses Eigenschaftsverhalten ist identisch zu ImageLabel.ImageRectSize .

Code-Beispiele

Image Animation using Spritesheet

-- Place this in an ImageLabel/ImageButton with size 256x256
local imageLabel = script.Parent
-- The following image is 1024x1024 with 12 frames (256x256)
-- The frames play an animation of a man throwing a punch
imageLabel.Image = "rbxassetid://848623155"
imageLabel.ImageRectSize = Vector2.new(256, 256)
-- The order of the frames to be displayed (left-to-right, then top-to-bottom)
local frames = {
Vector2.new(0, 0),
Vector2.new(1, 0),
Vector2.new(2, 0),
Vector2.new(3, 0),
Vector2.new(0, 1),
Vector2.new(1, 1),
Vector2.new(2, 1),
Vector2.new(3, 1),
Vector2.new(0, 2),
Vector2.new(1, 2),
Vector2.new(2, 2),
Vector2.new(3, 2),
}
-- Animate the frames one at a time in a loop
while true do
for _, frame in ipairs(frames) do
imageLabel.ImageRectOffset = frame * imageLabel.ImageRectSize
task.wait(0.1)
end
end
Image ScaleType Demo

local imageLabel = script.Parent
-- Set the source image to be a 64x64 padlock
imageLabel.Image = "rbxassetid://284402752"
imageLabel.BackgroundTransparency = 0
imageLabel.BackgroundColor3 = Color3.new(1, 1, 1) -- White
imageLabel.ImageColor3 = Color3.new(0, 0, 0) -- Black
local function resizeInACircle()
for theta = 0, 2, 0.02 do
imageLabel.Size = UDim2.new(
0,
100 + math.cos(theta * 2 * math.pi) * 50,
0,
100 + math.sin(theta * 2 * math.pi) * 50
)
task.wait()
end
end
while true do
-- Stretch simply stretches the source image to fit
-- the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Stretch
resizeInACircle()
-- Tile will render the source image multiple times
-- enough to fill the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Tile
imageLabel.TileSize = UDim2.new(0, 64, 0, 64)
resizeInACircle()
-- Slice will turn the image into a nine-slice UI.
imageLabel.ScaleType = Enum.ScaleType.Slice
imageLabel.SliceCenter = Rect.new(30, 30, 34, 34)
resizeInACircle()
end

ImageRectSize

Parallel lesen

Erlaubt die teilweise Anzeige eines Bildes in Verbindung mit ImageButton.ImageRectOffset . Dieses Eigenschaft bestimmt die Pixelgröße des Bildbereichs, die angezeigt werden soll. Wenn eine der Dimensionen auf 0 gesetzt ist, wird stattdessen das gesamte Bild angezeigt.

Dieses Eigenschaftsverhalten ist identisch zu ImageLabel.ImageRectOffset .

Code-Beispiele

Image Animation using Spritesheet

-- Place this in an ImageLabel/ImageButton with size 256x256
local imageLabel = script.Parent
-- The following image is 1024x1024 with 12 frames (256x256)
-- The frames play an animation of a man throwing a punch
imageLabel.Image = "rbxassetid://848623155"
imageLabel.ImageRectSize = Vector2.new(256, 256)
-- The order of the frames to be displayed (left-to-right, then top-to-bottom)
local frames = {
Vector2.new(0, 0),
Vector2.new(1, 0),
Vector2.new(2, 0),
Vector2.new(3, 0),
Vector2.new(0, 1),
Vector2.new(1, 1),
Vector2.new(2, 1),
Vector2.new(3, 1),
Vector2.new(0, 2),
Vector2.new(1, 2),
Vector2.new(2, 2),
Vector2.new(3, 2),
}
-- Animate the frames one at a time in a loop
while true do
for _, frame in ipairs(frames) do
imageLabel.ImageRectOffset = frame * imageLabel.ImageRectSize
task.wait(0.1)
end
end
Image ScaleType Demo

local imageLabel = script.Parent
-- Set the source image to be a 64x64 padlock
imageLabel.Image = "rbxassetid://284402752"
imageLabel.BackgroundTransparency = 0
imageLabel.BackgroundColor3 = Color3.new(1, 1, 1) -- White
imageLabel.ImageColor3 = Color3.new(0, 0, 0) -- Black
local function resizeInACircle()
for theta = 0, 2, 0.02 do
imageLabel.Size = UDim2.new(
0,
100 + math.cos(theta * 2 * math.pi) * 50,
0,
100 + math.sin(theta * 2 * math.pi) * 50
)
task.wait()
end
end
while true do
-- Stretch simply stretches the source image to fit
-- the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Stretch
resizeInACircle()
-- Tile will render the source image multiple times
-- enough to fill the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Tile
imageLabel.TileSize = UDim2.new(0, 64, 0, 64)
resizeInACircle()
-- Slice will turn the image into a nine-slice UI.
imageLabel.ScaleType = Enum.ScaleType.Slice
imageLabel.SliceCenter = Rect.new(30, 30, 34, 34)
resizeInACircle()
end

ImageTransparency

Parallel lesen

Die BildTransparenz bestimmt die Alpha eines UI-Element-Renderings. Ein Wert von 0 ist vollständig opake, und ein Wert von 1 ist vollständig durchsichtig (unsichtbar). Diese Eigenschaft verhält sich ähnlich zu GuiObject.BackgroundTransparency oder BasePart.Transparency.

Code-Beispiele

Oscillate ImageTransparency

local RunService = game:GetService("RunService")
local imageLabel = script.Parent
local function onRenderStep()
-- Oscillate ImageTransparency from 0 to 1 using a sine wave
imageLabel.ImageTransparency = math.sin(workspace.DistributedGameTime * math.pi) * 0.5 + 0.5
end
RunService.RenderStepped:Connect(onRenderStep)

IsLoaded

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die IsLoaded-Eigenschaft zeigt an, ob die ImageButton.Image-Eigenschaft vom Roblox-Website geladen wurde. Bilder, die von der Moderation abgelehnt wurden, werden niemals geladen.

Code-Beispiele

Image Load Time

local imageLabel = script.Parent
local startTime = workspace.DistributedGameTime
-- Wait for the image to load
while not imageLabel.IsLoaded do
task.wait()
end
-- Measure and display how long it took to load
local deltaTime = workspace.DistributedGameTime - startTime
print(("Image loaded in %.3f seconds"):format(deltaTime))

PressedImage

ContentId
Parallel lesen

Eine Textur-ID, die als ImageButton Eigenschafteneingestellt werden kann. Wenn die Schaltfläche gedrückt wird, wird dieses Bild gerendert.

ResampleMode

Parallel lesen

Bestimmt, wie das Bild aussieht, wenn es skaliert wird.

Standardmäßig glättet das Bild die Textur, wenn es größer oder kleiner als seine Größe in der Texturentinner-Speicheranzeige ist. Im Gegensatz dazu Enum.ResamplerMode.Pixelated bewahrt die scharfen Kanten der BildPixel.

Parallel lesen

Die Skalierungstyp-Eigenschaft bestimmt, in welcher Weise ein ImageButton.Image gerendert wird, wenn die Größe des Elements der Benutzeroberfläche von der Größe der Quelle abweicht.

Standardmäßig ist diese Eigenschaft Enum.ScaleType.Stretch, was einfach die Bildgrößen ausstreckt/komprimiert, damit sie genau dem Skalierungselement passen. Da transparente Pixel beim Hochladen auf die Roblox-Website schwarz gesetzt sind, sollten transparente Bilder Alpha-Blend verwenden, um eine schwarze Umriss um skalierte Bilder zu vermeiden.

Für Enum.ScaleType.Slice wird die Eigenschaft ImageButton.SliceCenter im Eigenschaften-Fenster angezeigt. Dies gilt für 9-Slice-UI: Wenn Sie das Skalieren aufrufen, bleiben die Ecken die Quellgröße des Bildes. Die Kanten des Bildes werden sich beim Skalieren auf die Breite/Höhe des Bildes ausdehnen. Schließlich

Schließlich, für Enum.ScaleType.Tile, wird die Eigenschaft ImageButton.TileSize in dem Eigenschaften-Fenster angezeigt. Dies gilt für gestaltete Bilder, bei denen die Größe jedes Bildes durch die ImageButton.TileSize -Eigenschaft bestimmt wird.

Code-Beispiele

Image ScaleType Demo

local imageLabel = script.Parent
-- Set the source image to be a 64x64 padlock
imageLabel.Image = "rbxassetid://284402752"
imageLabel.BackgroundTransparency = 0
imageLabel.BackgroundColor3 = Color3.new(1, 1, 1) -- White
imageLabel.ImageColor3 = Color3.new(0, 0, 0) -- Black
local function resizeInACircle()
for theta = 0, 2, 0.02 do
imageLabel.Size = UDim2.new(
0,
100 + math.cos(theta * 2 * math.pi) * 50,
0,
100 + math.sin(theta * 2 * math.pi) * 50
)
task.wait()
end
end
while true do
-- Stretch simply stretches the source image to fit
-- the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Stretch
resizeInACircle()
-- Tile will render the source image multiple times
-- enough to fill the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Tile
imageLabel.TileSize = UDim2.new(0, 64, 0, 64)
resizeInACircle()
-- Slice will turn the image into a nine-slice UI.
imageLabel.ScaleType = Enum.ScaleType.Slice
imageLabel.SliceCenter = Rect.new(30, 30, 34, 34)
resizeInACircle()
end

SliceCenter

Parallel lesen

Die Eigenschaft SliceCenter setzt die Schnittgrenzen eines 9-gespaltenen Bildes, wenn ImageButton.ScaleType auf Enum.ScaleType.Slice festgelegt ist. Bitte beachten Sie, dass diese E

Um mehr über 9-sliced-Bilder zu erfahren, siehe dieses Tutorial: UI 9 Slice Design.

Code-Beispiele

Image ScaleType Demo

local imageLabel = script.Parent
-- Set the source image to be a 64x64 padlock
imageLabel.Image = "rbxassetid://284402752"
imageLabel.BackgroundTransparency = 0
imageLabel.BackgroundColor3 = Color3.new(1, 1, 1) -- White
imageLabel.ImageColor3 = Color3.new(0, 0, 0) -- Black
local function resizeInACircle()
for theta = 0, 2, 0.02 do
imageLabel.Size = UDim2.new(
0,
100 + math.cos(theta * 2 * math.pi) * 50,
0,
100 + math.sin(theta * 2 * math.pi) * 50
)
task.wait()
end
end
while true do
-- Stretch simply stretches the source image to fit
-- the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Stretch
resizeInACircle()
-- Tile will render the source image multiple times
-- enough to fill the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Tile
imageLabel.TileSize = UDim2.new(0, 64, 0, 64)
resizeInACircle()
-- Slice will turn the image into a nine-slice UI.
imageLabel.ScaleType = Enum.ScaleType.Slice
imageLabel.SliceCenter = Rect.new(30, 30, 34, 34)
resizeInACircle()
end

SliceScale

Parallel lesen

Skaliert die 9-Kante-Kanten durch das angegebte Verhältnis. Dies bedeutet, dass die Kanten um die 9-Kante wachsen, als ob du eine neue Version der Textur hochgeladen hast. Standard ist 1.0.

Als Multiplikator für die Kanten eines 9-Slice ist es nützlich, ein umgerundetes Eckbild für mehrere Radii wiederzuverwenden

Siehe auch:

TileSize

Parallel lesen

TileSize setzt die Fliesengröße des ImageButton. Die Standardwerte UDim2 sind 1,0,1,0. Die Skalierungskomponente des UDim2 wird die Fliese basierend auf der Größe des ImageButton skalieren. Der Offset beginnt in原始Pixel. Die Skalierung beginnt an der oberen linken Ecke des Bildes. Zum Beispiel ein Skalierung von 0.5

Diese Eigenschaft ist nur aktiv, wenn der ScaleType für die Bildschaltfläche auf "Tile" eingestellt ist, nicht auf "Stretch" oder "Fill".

Code-Beispiele

Image ScaleType Demo

local imageLabel = script.Parent
-- Set the source image to be a 64x64 padlock
imageLabel.Image = "rbxassetid://284402752"
imageLabel.BackgroundTransparency = 0
imageLabel.BackgroundColor3 = Color3.new(1, 1, 1) -- White
imageLabel.ImageColor3 = Color3.new(0, 0, 0) -- Black
local function resizeInACircle()
for theta = 0, 2, 0.02 do
imageLabel.Size = UDim2.new(
0,
100 + math.cos(theta * 2 * math.pi) * 50,
0,
100 + math.sin(theta * 2 * math.pi) * 50
)
task.wait()
end
end
while true do
-- Stretch simply stretches the source image to fit
-- the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Stretch
resizeInACircle()
-- Tile will render the source image multiple times
-- enough to fill the UI element's space
imageLabel.ScaleType = Enum.ScaleType.Tile
imageLabel.TileSize = UDim2.new(0, 64, 0, 64)
resizeInACircle()
-- Slice will turn the image into a nine-slice UI.
imageLabel.ScaleType = Enum.ScaleType.Slice
imageLabel.SliceCenter = Rect.new(30, 30, 34, 34)
resizeInACircle()
end

Methoden

Ereignisse