类型 函数 库 widget.* 返回值 ScrollViewWidget 修订 版本 2024.3703 关键词 widget, 滚动视图, 滚动框, 滚动内容 另请参阅 ScrollViewWidget
创建一个 ScrollViewWidget 对象。
ScrollViewWidget 对象包含一个遮罩,该遮罩将其视图限制在定义的宽度和高度内。嵌套遮罩限制为 3 层,因此在将遮罩对象插入到作为容器的其他遮罩对象(包括 display.newContainer、widget.newScrollView、widget.newTableView 或遮罩的 显示组)时,必须小心谨慎。其他使用遮罩的显示对象包括 display.newText、display.newEmbossedText 以及任何其他 遮罩的 显示对象。例如,一个文本对象(一个遮罩)在一个容器(一个遮罩)内,而该容器又在另一个容器(一个遮罩)内,则将达到但不会超过 3 个嵌套遮罩的限制。
ScrollViewWidget 控件不支持 缩放,也不支持通过 .width 或 .height 更改宽度/高度。
widget.newScrollView( options )
此函数接受一个参数 options
,它是一个包含以下参数的表
字符串。要分配给滚动视图的可选标识字符串。默认为 widget_scrollView
。
数字。控件的 **x** 和 **y** 中心点的坐标。如果定义了 left
和 top
值,则这些值将被覆盖。
数字。创建控件的左侧和顶部位置。如果指定,这些值将覆盖 x
和 y
参数。
数字。滚动视图的可见(屏幕上)宽度和高度。
数字。总可滚动内容区域的宽度和高度。这可以在创建滚动视图控件后通过 object:setScrollWidth() 和 object:setScrollHeight() 方法更改。请注意,当您将对象插入滚动视图时,这些值会自动更新。
数字。确定轻弹内容时内容移动的速度。默认值为 0.972
。
布尔值。如果设置为 true
,则滚动视图将不会水平滚动。
布尔值。如果设置为 true
,则滚动视图将不会垂直滚动。
布尔值。如果设置为 true
,则滚动视图将被锁定,这意味着它无法滚动。
布尔值。如果设置为 false
,则滚动限制处的反弹效果将被禁用。默认为 true
。
侦听器。用于侦听 ScrollViewWidget 运动/滚动事件的函数。在此侦听器函数中,event.phase
返回预期的触摸交互阶段 "began"
、"moved"
或 "ended"
。此外,当滚动视图轻弹/滑动动量自然停止时,可以检测到 "stopped"
阶段。最后,可以通过 event.limitReached
检测到任何方向的滚动限制。如果发生这种情况,event.direction
将返回滚动视图到达限制时移动的方向。
表。包含 RGB+A 背景颜色设置的表。默认为白色。
backgroundColor = { 0.8, 0.8, 0.8 }
布尔值。如果为 true
,则滚动视图的背景将被隐藏,但它仍然接收触摸。
布尔值。如果设置为 true
,则滚动条将不会出现在滚动视图中。
表。包含自定义滚动条的 图像表 规格的表。自定义滚动条需要图像表中的 3 帧。每帧都需要是大小相等的正方形。在 scrollBarOptions
表中,您必须指定 4 个必需参数:sheet
、topFrame
、middleFrame
和 bottomFrame
。
scrollBarOptions = { sheet = scrollBarSheet, -- Reference to the image sheet topFrame = 1, -- Number of the "top" frame middleFrame = 2, -- Number of the "middle" frame bottomFrame = 3 -- Number of the "bottom" frame }
数字。可滚动内容区域到达顶部/底部限制时,距离滚动视图顶部和底部的像素数。两者的默认值均为 0
。
数字。可滚动内容区域到达左/右限制时,距离滚动视图左侧和右侧的像素数。两者的默认值均为 0
。
可以通过 object:insert() 和 object:remove() 函数分别向滚动视图添加或从中移除视觉内容。
local widget = require( "widget" ) -- ScrollView listener local function scrollListener( event ) local phase = event.phase if ( phase == "began" ) then print( "Scroll view was touched" ) elseif ( phase == "moved" ) then print( "Scroll view was moved" ) elseif ( phase == "ended" ) then print( "Scroll view was released" ) end -- In the event a scroll limit is reached... if ( event.limitReached ) then if ( event.direction == "up" ) then print( "Reached bottom limit" ) elseif ( event.direction == "down" ) then print( "Reached top limit" ) elseif ( event.direction == "left" ) then print( "Reached right limit" ) elseif ( event.direction == "right" ) then print( "Reached left limit" ) end end return true end -- Create the widget local scrollView = widget.newScrollView( { top = 100, left = 10, width = 300, height = 400, scrollWidth = 600, scrollHeight = 800, listener = scrollListener } ) -- Create a image and insert it into the scroll view local background = display.newImageRect( "assets/scrollimage.png", 768, 1024 ) scrollView:insert( background )
local widget = require( "widget" ) -- ScrollView listener local function scrollListener( event ) local phase = event.phase if ( phase == "began" ) then print( "Scroll view was touched" ) elseif ( phase == "moved" ) then print( "Scroll view was moved" ) elseif ( phase == "ended" ) then print( "Scroll view was released" ) end -- In the event a scroll limit is reached... if ( event.limitReached ) then if ( event.direction == "up" ) then print( "Reached bottom limit" ) elseif ( event.direction == "down" ) then print( "Reached top limit" ) elseif ( event.direction == "left" ) then print( "Reached right limit" ) elseif ( event.direction == "right" ) then print( "Reached left limit" ) end end return true end -- Create image sheet for custom scroll bar local scrollBarOpt = { width = 20, height = 20, numFrames = 3, sheetContentWidth = 20, sheetContentHeight = 60 } local scrollBarSheet = graphics.newImageSheet( "scrollBar.png", scrollBarOpt ) -- Create the widget local scrollView = widget.newScrollView( { top = 100, left = 10, width = 300, height = 400, scrollWidth = 600, scrollHeight = 800, listener = scrollListener, scrollBarOptions = { sheet = scrollBarSheet, topFrame = 1, middleFrame = 2, bottomFrame = 3 } } ) -- Create a image and insert it into the scroll view local background = display.newImageRect( "assets/scrollimage.png", 768, 1024 ) scrollView:insert( background )