animation.newTimeline()

类型 函数
返回值 时间线
修订 版本 2024.3703
关键词 动画, 补间动画, 时间线, 插值, newTimeline
另请参阅 动画 — 补间动画和时间线 (指南)
补间动画
时间线

概述

创建一个新的 Timeline 对象。它可以包含多个顺序和/或重叠的补间动画,每个补间动画对一个或多个对象执行独特的补间动画。此外,您可以在时间线的跨度内设置时间标记作为跳转点。

注意

默认情况下,时间线以暂停状态开始。因此,您的选择是

  • 通过将 autoPlay 参数设置为 true 立即播放时间线。在这种情况下,并且仅针对此初始播放事件,您可能指定的任何时间线 onResume 监听器函数都**不会**被触发。

  • 通过在 Timeline 对象上调用 object:resume() 或通过使用对 Timeline 对象的引用调用 animation.resume() 来开始播放它。请注意,这样做将触发时间线的 onResume 监听器函数(如果您指定了一个)。

语法

animation.newTimeline( timelineParams )
timelineParams (必需)

. 一个指定子补间动画、标记和其他时间线参数的表 — 有关详细信息,请参阅下一节。

参数参考

tweens (必需)

. 一个包含子表的表,每个子表指定要包含在时间线中的补间动画。这些表中的每一个都接受以下键值

  • startTime — 可选的 数字,表示补间动画应在时间线进程中开始的毫秒数。默认为 0(时间线开头)。
  • tween — 必需的 ,用于配置补间动画。此补间动画的配置应类似于 animation.to(),包含要设置动画的目标对象以及属性和参数。
  • useFrom — 可选的 布尔值 属性,如果设置为 true,将使补间动画的行为如同由 animation.from() 声明一样。

例如,以下 tweens 表为时间线配置了两个单独的补间动画

    tweens = {
        { startTime=0, tween={ object1, { x=400 }, { time=4000, iterations=5, reflect=true } } },
        { startTime=1000, tween={ object1, { y=400 }, { time=4000, easing=easing.outQuad } } }
    }
markers (可选)

. 一个可选的时间标记表,与时间线关联。这些标记允许您指定命名跳转时间线内的点。每个标记都应定义为一个 ,其中可以包含以下属性

  • name — 与标记关联的 字符串 名称。此名称可用于在其他命令中引用标记,例如 object:setPosition()animation.setPosition()。此名称应**唯一**(不应在同一时间线内使用重复的标记名称)。
  • time — 设置标记的时间线进程中的 数字 毫秒数。
  • params — 一个可选的 ,可以包含自定义信息;此表将传递给 onMarkerPass 监听器函数(详情)。

例如,此 markers 表为时间线配置了三个时间标记

    markers = {
        { name="marker_start", time=0 },    -- Start of the timeline
        { name="marker_2000", time=2000 },  -- 2 seconds into the timeline
        { name="marker_3000", time=3000 }   -- 3 seconds into the timeline
    }
autoPlay (可选)

布尔值. 如果为 true,则时间线将立即开始播放。默认为 false

tag (可选)

字符串. 指定时间线标签。动画库可以暂停、恢复、取消、设置位置或更改共享相同标签的时间线的速度比例。

id (可选)

字符串. 分配给时间线的可选标识字符串。可以从任何时间线事件监听器函数中以 obj.id 的形式检索它(如下所示)。

delay (可选)

数字. 指定时间线开始播放前的延迟(以毫秒为单位)。默认为 0

speedScale (可选)

数字. 调整时间线的相对速度比例。这必须是大于 0 的正数。默认情况下,速度比例为 1(正常速度)。大于 1 的值将提高速度,而小于 1 的值将降低速度。

autoCancel (可选)

布尔值. 如果设置为 true,则在时间线完成后,所有子补间动画(以及时间线本身)都将被取消。仅当您不打算在第一次播放后再次播放时间线时才应执行此操作。默认为 false

onStart (可选)

侦听器. 在时间线开始之前直接调用的侦听器函数。此函数将接收对关联的 Timeline 对象的引用作为其唯一参数。

onComplete (可选)

侦听器. 时间线完成后调用的侦听器函数。此函数将接收对关联的 Timeline 对象的引用作为其唯一参数。

onPause (可选)

侦听器. 暂停时间线时调用的侦听器函数。此函数将接收对关联的 Timeline 对象的引用作为其唯一参数。

onResume (可选)

侦听器. 恢复时间线时调用的侦听器函数。此函数将接收对关联的 Timeline 对象的引用作为其唯一参数。

onCancel (可选)

侦听器. 取消时间线时调用的侦听器函数。此函数将接收对关联的 Timeline 对象的引用作为其唯一参数。

onPositionChange (可选)

侦听器. 通过 object:setPosition()animation.setPosition() 手动更改时间线的播放位置时调用的侦听器函数。此函数将接收对关联的 Timeline 对象的引用作为其唯一参数。

onMarkerPass (可选)

侦听器. 到达/ melewati 时间线内的标记时调用的侦听器函数。此函数将接收一个 ,其中包含对关联的 Timeline 对象 (timeline) 的引用,以及分配给特定标记的 name 属性和可选的 params 表。

示例

local object1 = display.newRect( 50, 50, 100, 100 )

local function timelineListener( obj )
    print( "Timeline completed; ID: " .. obj.id )
end

-- Create a timeline object
local timelineParams = {
    tweens = {
        { startTime=0, tween={ object1, { x=400 }, { time=4000, iterations=5, reflect=true } } },
        { startTime=1000, tween={ object1, { y=400 }, { time=4000, easing=easing.outQuad } } }
    },
    markers = {
        { name="marker_start", time=0 },
        { name="marker_2000", time=2000 }
    },
    id = "timeline1",
    onComplete = timelineListener
}
local newTimeline = animation.newTimeline( timelineParams )

-- Set the timeline playing
newTimeline:resume()