widget.newSpinner()

类型 函数
widget.*
返回值 SpinnerWidget
修订 2024.3703 版本
关键字 widget、spinner、活动、指示器
另请参阅 SpinnerWidget

概述

创建 SpinnerWidget 对象。

陷阱

语法

widget.newSpinner( options )

此函数采用一个参数,即 options,该参数是一个表,接受以下参数

id (可选)

String. 可选标识,用于分配给 spinner。默认值为 widget_spinner

x, y (可选)

Number. widget xy 中心点的坐标。如果定义了 lefttop,则这些值将被 lefttop 覆盖。

left, top (可选)

Number. widget 创建时的左上角位置。如果已指定,这些值将覆盖 xy 参数。

width, height (可选)

Number. 图像图集中的每帧的宽度和高度 image sheet。如果你正在使用默认主题,则此类值会自动设置。

方法

object:start()

object:stop()

单帧构建

可以使用图像图集的一个帧构建一个基本 spinner image sheet。图像将按照指定的增量时间旋转指定增量角度。

sheet (必需)

ImageSheet. spinner 的图像图集对象 image sheet

startFrame (必需)

Number. spinner 动画序列的起始帧索引(图集中的唯一帧的索引)。

deltaAngle (可选)

Number. spinner 每增加一次时间增量(请参阅下面的 incrementEvery)旋转的增量角度。例如,如果你指定 30,则 spinner 每增加一次将旋转 30 度。

incrementEvery (可选)

Number. spinner 的每次旋转迭代的延迟,以毫秒为单位。

多帧构建

可以使用图像图集的多帧构建一个动画 spinner image sheet。此 spinner 类型会在指定的某个时间内循环播放帧序列。

sheet (必需)

ImageSheet. spinner 的图像图集对象 image sheet

startFrame (必需)

Number. spinner 动画序列的起始帧索引(其动画序列中的第一帧)。

count (必需)

Number. spinner 动画序列的总帧数。

time (可选)

Number. spinner 动画一周的循环时间,以毫秒为单位。默认值为 1000

示例

单帧
local widget = require( "widget" )

-- Image sheet options and declaration
-- For testing, you may copy/save the image under "Single Frame Construction" above
local options = {
    width = 128,
    height = 128,
    numFrames = 1,
    sheetContentWidth = 128,
    sheetContentHeight = 128
}
local spinnerSingleSheet = graphics.newImageSheet( "widget-spinner-single.png", options )

-- Create the widget
local spinner = widget.newSpinner(
    {
        width = 128,
        height = 128,
        sheet = spinnerSingleSheet,
        startFrame = 1,
        deltaAngle = 10,
        incrementEvery = 20
    }
)

spinner:start()
多帧
local widget = require( "widget" )

-- Image sheet options and declaration
-- For testing, you may copy/save the image under "Multi-Frame Construction" above
local options = {
    width = 128,
    height = 128,
    numFrames = 4,
    sheetContentWidth = 512,
    sheetContentHeight = 128
}
local spinnerMultiSheet = graphics.newImageSheet( "widget-spinner-multi.png", options )

-- Create the widget
local spinner = widget.newSpinner(
    {
        width = 128,
        height = 128,
        sheet = spinnerMultiSheet,
        startFrame = 1,
        count = 4,
        time = 800
    }
)

spinner:start()