ImageButton

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

一個 ImageButton 與 ImageLabel 在渲染時的行為相同,與 GuiButton 的額外行為相關。它定義了相同的圖像渲染程式屬性,與 ImageLabel 的程式相同。

您可以設置 ImageButton.ImageTransparency 為 1 來禁用圖像渲染。這將剩下一個空白的正方形,可以作為按鈕使用。但是,您可以使用 TextButton 為此。

範例程式碼

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()

概要

屬性

屬性 繼承自 GuiButton
  • 平行讀取

    決定是否在滑鼠悠閒時自動變更按鈕的顏色。

  • 平行讀取

    如果 GUI 元素可見,否則鼠標將不會鎖定,除非右鍵已按下。

  • 平行讀取

    一個Boolean 屬性,表示對象是否已選擇。

  • 設定按鈕按鈕的造型,以基於預設造型的列表。

屬性 繼承自 GuiObject屬性 繼承自 GuiBase2d

方法

方法 繼承自 GuiObject

活動

活動 繼承自 GuiButton活動 繼承自 GuiObject活動 繼承自 GuiBase2d

屬性

HoverImage

ContentId
平行讀取

一個使用 ImageButton 被擺動時使用的材質 ID。

Image

ContentId
平行讀取

此屬性是內容類型屬性,該屬性應該包含裝飾或圖像上傳到 Roblox 的資產 ID。它與 Class.Decal.Texture 與關於從 Roblox 網站載入圖像的方式相同。 裝飾圖像將以 Class.ImageButton

範例程式碼

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

平行讀取

ImageColor3 屬性決定圖像的顏色化方式。當設為白色時,沒有顏色化發生。這個屬性對於重用圖像資產非常有用:如果來源圖像為完全白色並且透明,您可以使用此屬性來設置整個圖像的顏色。

範例程式碼

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

隱藏
平行讀取

此屬性應該包含一個 資產網址 或一個引用 EditableImage 對物件。

資產網址可以參照 Roblox 上傳的裝飾或圖像。它與 Decal.Texture 有關於載入圖像的方式。

渲染圖像將使用 ImageButton.ImageColor3 來上色。 您可以使用調整 ImageButton.ScaleType 屬性來調整圖像的大小、縮放和平移,以及 9 個點。

ImageRectOffset

平行讀取

允許在 ImageButton.ImageRectSize 與圖像的部分顯示。 此屬性決定圖像區域的Pixel Offset(從上方左邊)。

此屬性與 ImageLabel.ImageRectSize 相同。

範例程式碼

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

平行讀取

允許在 ImageButton.ImageRectOffset 的協助下顯示圖像的部分顯示。這個屬性將圖像區域的像素尺寸設為所顯示區域的大小。如果兩個尺寸都設為 0,則會顯示整個圖像。

此屬性與 ImageLabel.ImageRectOffset 相同。

範例程式碼

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

平行讀取

圖像透明度決定 UI 元素的渲染圖像的 alpha 。值 0 是完全不透明的,值 1 是完全透明的 (隱藏)。此屬性與 GuiObject.BackgroundTransparencyBasePart.Transparency 相同。

範例程式碼

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

唯讀
未複製
平行讀取

載入屬性 ImageButton.Image 指示是否從 Roblox 網站載入。審核的圖像將永遠載入。

範例程式碼

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
平行讀取

可以設為 ImageButton 屬性的材質 ID。按一下按鈕時,它會渲染此圖像。

ResampleMode

平行讀取

決定圖像擴大時的外觀。

由預設設定,圖像在顯示時將畫像的大小調整為大於或小於其顯示大小在圖像記憶體中的大小。 與此相反, Enum.ResamplerMode.Pixelated 會保留圖像的像素邊緣。

平行讀取

ScaleType 屬性決定在 ImageButton.Image 的尺寸是否與來源圖像的尺寸不同。

預設值為 Enum.ScaleType.Stretch ,這會簡單伸展/縮放圖像尺寸,以正確適合 UI 元素的空間。雖然透明像素在上傳到 Roblox 網站時設為黑色,因此透明圖像應該適用 alpha 漸層以避免邊緣上的黑色外觀。

對於 Enum.ScaleType.SliceImageButton.SliceCenter 屬性會在屬性窗口中顯示。這是對於 9 個滑鼠掛載的 UI 的中心區域:當滑鼠掛載時,角落會保持原始圖像尺寸。圖像的邊緣會延伸到圖像的寬

最後,對於 Enum.ScaleType.TileImageButton.TileSize 屬性會在屬性窗口中顯示。這是對於由磚塊圖形表示的圖像,其每個圖像磚塊的大小是由 ImageButton.TileSize 屬性決定。

範例程式碼

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

平行讀取

Class.ImageButton.ScaleType 設置為 Enum.ScaleType.Slice 時,會設定切片邊界。請注意,此屬性僅在 Studio 屬性欄中顯示。 <

要了解更多關於 9 分割圖像的內容,請查看此教學:UI 9 Slice Design

範例程式碼

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

平行讀取

以指定比例擴展 9 個邊緣。這意味著邊緣在 9 個邊緣上方的長度會增加。預設為 1.0。

作為 9 個斷片的邊緣乘數,它對於重用一個圓形角落圖像以多個範圍的圖像

也看:

TileSize

平行讀取

TileSize 設定圖像按鈕的尺寸。預設值 UDim2 為 1,0,1,0。UDim2 的縮放元件會根據圖像按鈕的大小調整尺寸。 Offset 是在原始像素的左上角開始。例如,將縮放 0.5 設為 1.0 將使圖像按��

此屬性只有在將 ScaleType 設為 Tile 而不是 Slice 或 Stretch 時才會啟用。

範例程式碼

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

方法

活動