类型 函数 库 widget.* 返回值 SliderWidget 修订版 Release 2024.3703 关键字 widget、slider、sliding control 另请参阅 SliderWidget
创建 SliderWidget 对象。
为节省纹理内存,SliderWidget 对象只能通过 image sheet 创建。
SliderWidget 对象不支持 scaling,也不支持通过 .width 或 .height 更改宽度/高度。
widget.newSlider( options )
此函数采用一个参数 options
,它是一个接受以下参数的表
字符串. 为滑块指定的可选标识。默认值为 "widget_slider"
。
数字. 滑块 x 和 y 中心点的坐标。如果定义了 left
和 top
,这些值将被它们覆盖。
数字. 创建滑块的 left 和 top 位置。如果指定,这些值将覆盖 x
和 y
参数。
字符串. 滑块的方向,可以是 "horizontal"
或 "vertical"
。默认值为 "horizontal"
。
数字. 滑块的宽度 或 高度,具体取决于 orientation
设置(水平方向的 width
或垂直方向的 height
)。
数字. 以百分比表示滑块的起始值。默认值为 50
,表示滑块手柄将从 50% 开始。
侦听器. 用于处理滑块交互事件的函数。在此侦听器函数中,event.phase
返回预期的触控交互阶段,即 "began"
、"moved"
或 "ended"
。此外,您可以用 event.value
读取滑块的新值。
使用 image sheet 可以对滑块小工具进行视觉定制。如下例所示,可以利用 5 个框架组装外部边框和内部填充条。外部边框由左端盖(红色)、中间跨度(绿色)和右端盖(黄色)组成。内部填充区域(橙色)将延伸来跨度当前滑块填充百分比。所有的外部边框框架和内部填充框架都应具有相同的宽度和高度。
控制柄框架的大小可以和其他框架不同。请注意,所有滑块控件都有一个限制,限制控制柄在任一方向上的拖动范围。关于视觉自定义,当控制柄的中心轴到达中间跨部分的任一边缘时,控制柄将停止。因此,对于水平滑块,当控制柄中心轴到达
![]() |
→ | ![]() |
ImageSheet. 滑块的图像图集对象。
Number. 边框左端盖的框架索引。
Number. 边框中间跨度的框架索引。
Number. 边框右端盖的框架索引。
Number. 中间填充跨度的框架索引。
Numbers. 边框框架和中间填充跨度的宽度/高度。所有这些框架应该共享相同的宽度和高度。
Number. 控制柄元素的框架索引。
Numbers. 控制柄元素框架的宽度/高度。
Number. 边框顶部端盖的框架索引。
Number. 边框中间跨度的框架索引。
Number. 边框底部端盖的框架索引。
Number. 中间填充跨度的框架索引。
Numbers. 边框框架和中间填充跨度的宽度/高度。所有这些框架应该共享相同的宽度和高度。
Number. 控制柄元素的框架索引。
Numbers. 控制柄元素框架的宽度/高度。
local widget = require( "widget" ) -- Slider listener local function sliderListener( event ) print( "Slider at " .. event.value .. "%" ) end -- Create the widget local slider = widget.newSlider( { x = display.contentCenterX, y = display.contentCenterY, width = 400, value = 10, -- Start slider at 10% (optional) listener = sliderListener } )
local widget = require( "widget" ) -- Slider listener local function sliderListener( event ) print( "Slider at " .. event.value .. "%" ) end -- Create the widget local slider = widget.newSlider( { x = display.contentCenterX, y = display.contentCenterY, orientation = "vertical", height = 200, value = 10, -- Start slider at 10% (optional) listener = sliderListener } )
local widget = require( "widget" ) -- Slider listener local function sliderListener( event ) print( "Slider at " .. event.value .. "%" ) end -- Image sheet options and declaration -- For testing, you may copy/save the image under "Visual Customization" above local options = { frames = { { x=0, y=0, width=36, height=64 }, { x=40, y=0, width=36, height=64 }, { x=80, y=0, width=36, height=64 }, { x=124, y=0, width=36, height=64 }, { x=168, y=0, width=64, height=64 } }, sheetContentWidth = 232, sheetContentHeight = 64 } local sliderSheet = graphics.newImageSheet( "widget-slider.png", options ) -- Create the widget local slider = widget.newSlider( { sheet = sliderSheet, leftFrame = 1, middleFrame = 2, rightFrame = 3, fillFrame = 4, frameWidth = 36, frameHeight = 64, handleFrame = 5, handleWidth = 64, handleHeight = 64, x = display.contentCenterX, y = display.contentCenterY, orientation = "horizontal", width = 300, listener = sliderListener } )