ImageButton

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Một ImageButton hành xử tương tự như một ImageLabel trong quá trình thiết lập với thêm các hành vi của một GuiButton . Nó định nghĩa cùng các thuộc tính tạo hình ảnh như một ImageLabel định nghĩa.

Bạn có thể tắt render hình ảnh bằng cách đặt ImageButton.ImageTransparency để 1. Điều này sẽ để lại cho bạn một hình ảnh trống có thể được sử dụng như một nút. Tuy nhiên, nó có thể là tốt hơn để sử dụng một hình ảnh trống TextButton cho điều n

Mẫu mã

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

Tóm Tắt

Thuộc Tính

  • HoverImage:ContentId
    Đọc Song Song

    Một ID chuẩn bị cho phép khi bạn giữ ImageButton .

  • Image:ContentId
    Đọc Song Song

    Nội dung hình ảnh hiển thị bởi thành phần UI. Đọc và viết vào ImageContent .

  • Đọc Song Song

    Xác định cách màu sắc hình ảnh được tạo.

  • Ẩn
    Đọc Song Song

    Nội dung hình ảnh được hiển thị bởi thành phần UI. Hỗ trợ liên kết tài sảnEditableImage .

  • Đọc Song Song

    Số lệch trong pixel của khu vực dưới đấy của hình ảnh để hiển thị.

  • Đọc Song Song

    Xác định kích thước trong pixel của khu vực hình ảnh để được hiển thị.

  • Đọc Song Song

    Xác định độ trong suốt của hình ảnh đã tạo.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Chỉ ra nếu hình ảnh đã tải xong từ trang Roblox.

  • PressedImage:ContentId
    Đọc Song Song

    Một textureId sẽ được sử dụng khi một ImageButton được nhấn.

  • Chọn chế độ tái chỉnh hình ảnh cho nút.

  • Đọc Song Song

    Xác định cách mà hình ảnh sẽ thay đổi kích thước nếu được hiển thị trong một thành phần UI whose kích thước khác biệt từ hình ảnh nguồn.

  • Đọc Song Song

    Đặt giới hạn cắt của hình ảnh 9-sliced.

  • Đọc Song Song

    Tăng 9 cạnh mép bằng tỷ lệ được xác định.

  • Đọc Song Song

    Điều chỉnh kích thước thẻ của ImageButton.

Thuộc Tính kế thừa từ GuiButton
  • Đọc Song Song

    Xác định màu sắc của nút khi chuột hoạt động trên hoặc nhấp vào nó.

  • Đọc Song Song

    Nếu đúng khi thành phần GUI đang hiển thị, chuột sẽ không bị khóa nếu nút chuột phải không được nhấn.

  • Đọc Song Song

    Một đặt tínhBoolean để cho biết có phải chọn một đối tượng nào không.

  • Đọc Song Song

    Định dạng kiểu của GuiButton dựa trên một danh sách các kiểu đã định.

Thuộc Tính kế thừa từ GuiObjectThuộc Tính kế thừa từ GuiBase2d

Phương Pháp

Phương Pháp kế thừa từ GuiObject

Sự Kiện

Sự Kiện kế thừa từ GuiButtonSự Kiện kế thừa từ GuiObjectSự Kiện kế thừa từ GuiBase2d
  • SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal

    Kích hoạt khi lựa chọn gamepad di chuyển đến, rời đi hoặc thay đổi trong khu vực GuiBase2d hoặc bất kỳ con cháu GuiObjects kế tiếp.

Thuộc Tính

HoverImage

ContentId
Đọc Song Song

Một ID chuẩn bị cho phép khi bạn giữ ImageButton .

Image

ContentId
Đọc Song Song

Đây là một thuộc tính kiểu nội dung mà nó nên giữ ID tài nguyên của một hình ảnh hoặc video đã tải lên Roblox. Nó hoạt động tương tự như Class.Decal.Texture

Mẫu mã

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

Đọc Song Song

Thuộc tính Màu Hình ảnh3 xác định cách mà một hình ảnh được màu sắc. Khi đặt trên trắng, không có sự đổi màu nào xảy ra. Thuộc tính này rất hữu ích cho việc tái sử dụng nguồn ảnh: Nếu hình ảnh nguồn là hoàn toàn trắng với độ trong suốt, bạn có thể thiết lậ

Mẫu mã

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

Ẩn
Đọc Song Song

Thuộc tính này nên giữ một URL tài sản hoặc một tham chiếu đến một EditableImage đối tượng.

URL tài nguyên có thể tham khảo một decal hoặc hình ảnh đã tải lên Roblox. Nó hoạt động tương tự như Decal.Texture đối với việc tải hình ảnh.

Hình ảnh được tạo sẽ được nhuộm màu bằng cách sử dụng ImageButton.ImageColor3 . Có thể tạo hình ảnh nhuộm màu bằng cách điều chỉnh thuộc tính ImageButton.ScaleType .

ImageRectOffset

Đọc Song Song

Cho phép hiển thị một hình ảnh bằng cách kết hợp với ImageButton.ImageRectSize . Điều này định vị lỗi đo (từ trên cùng bên trái) của khu vực hình ảnh để được hiển thị.

Đặt tính này hành xử giống như ImageLabel.ImageRectSize .

Mẫu mã

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

Đọc Song Song

Cho phép hiển thị một phần của hình ảnh kết hợp với ImageButton.ImageRectOffset . Đặt tính này xác định kích thước pixel của khu vực hình ảnh để được hiển thị. Nếu cả hai kích thước đều được đặt để 0, toàn bộ hình ảnh được hiển thị thay vì đó.

Đặt tính này hành xử giống như ImageLabel.ImageRectOffset .

Mẫu mã

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

Đọc Song Song

Transparency hình ảnh chỉ định alpha của hình ảnh render của một thành phần UI. Một giá trị 0 là hoàn toàn bị che giấu, và một giá trị 1 là hoàn toàn trong suốt (hiện hữu). Điều này tương tự như GuiObject.BackgroundTransparency hoặc BasePart.Transparency .

Mẫu mã

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Thuộc tính IsLoaded cho biết có phải lúc nào ImageButton.Image tài nguyên đã tải xong từ trang Roblox không. Các hình ảnh bị từ chối bởi sự kiểm duyệt sẽ không bao giờ được tải.

Mẫu mã

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
Đọc Song Song

Một ID chất liệu có thể được cài đặt như một tính chất ImageButton. Khi nút được nhấn, nó sẽ hiển thị hình ảnh này.

ResampleMode

Đọc Song Song

Xác định cách hình ảnh xem khi được thay đổi kích thước.

Bởi mặc định, hình ảnh lọc bỏ lớp thoáng khi hiển thị lớn hơn hoặc nhỏ hơn kích thước của nó trong bộ nhớ thoáng. Ngược lại, Enum.ResamplerMode.Pixelated giữ các cạnh sắc nét của hình ảnh.

Đọc Song Song

Thuộc tính ScaleType xác định cách mà một ImageButton.Image được hiển thị khi kích thước tuyệt đối của thành phần UI không khớp nối với kích thước nguồn hình ảnh.

Bởi mặc định, thuộc tính này là Enum.ScaleType.Stretch , which will simply stretch/compact the image dimensions so it fits the UI element's space exactly. Since transparent pixels are set to black when uploading to the Roblox website, transparent images should apply alpha bluring to avoid a blackish outline around scaled images.

Đối với Enum.ScaleType.Slice, thuộc tính ImageButton.SliceCenter sẽ được hiển thị trong cửa sổ Prop性. Đối với UI 9-Slice, các góc sẽ ở lại kích thước hình ảnh nguồn. Các mép của

Cuối cùng, cho Enum.ScaleType.Tile , các ImageButton.TileSize đặt tính sẽ được hiển thị trong các cửộc sống của các đối tượng. Đây là cho các hình ảnh đã phủ kín, nơi kích thước của mỗi hình ảnh đượ

Mẫu mã

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

Đọc Song Song

Thuộc tính SliceCenter điều chỉnh các giới hạn của các ô đĩa trong hình ảnh 9-sliced khi ImageButton.ScaleType được đ

Để tìm hiểu thêm về hình ảnh 9-sliced, hãy xem hướng dẫn này: Thiết kế UI 9 Slice.

Mẫu mã

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

Đọc Song Song

Tăng cỡ các cạnh 9-Slice bằng tỷ lệ được xác định. Điều này có nghĩa là các cạnh xung quanh 9-Slice sẽ phát triển như thể bạn đã tải một phiên bản mới của textured lên. Mặc định là 1.0.

Là một hệ số nhân cho các cạnh của một 9-Slice, nó là hữu ích để tái sử dụng một hình ảnh góc tròn để nhiều radii

Xem thêm:

TileSize

Đọc Song Song

TileSize điều chỉnh kích thước gạch của ImageButton. Các giá trị mặc định của UDim2 là 1,0,1,0. Phần thưởng của UDim2 sẽ bắt đầu từ góc trên cùng bên trái của hình ảnh. Ví

Điều này chỉ được kích hoạt nếu ScaleType cho Button Hình ảnh được đặt thành Gạch chứ không phải là Slice hoặc Stretch.

Mẫu mã

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

Phương Pháp

Sự Kiện