tweens
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTweens
补间动画
Animating properties over time in Phaser 4 -- TweenManager, creating tweens, tween config, easing functions, tween chains, stagger, yoyo, repeat, callbacks, and tween targets.
Key source paths: , , , , , , ,
Related skills: ../sprites-and-images/SKILL.md, ../animations/SKILL.md
src/tweens/TweenManager.jssrc/tweens/tween/Tween.jssrc/tweens/tween/TweenChain.jssrc/tweens/tween/BaseTween.jssrc/tweens/builders/src/tweens/typedefs/src/tweens/events/src/math/easing/在Phaser 4中为属性制作随时间变化的动画——TweenManager、创建补间、补间配置、缓动函数、补间链、交错动画、往返动画、重复、回调以及补间目标。
关键源码路径: , , , , , , ,
相关技能: ../sprites-and-images/SKILL.md, ../animations/SKILL.md
src/tweens/TweenManager.jssrc/tweens/tween/Tween.jssrc/tweens/tween/TweenChain.jssrc/tweens/tween/BaseTween.jssrc/tweens/builders/src/tweens/typedefs/src/tweens/events/src/math/easing/Quick Start
快速开始
js
// In a Scene's create() method:
const logo = this.add.image(100, 300, 'logo');
// Basic tween -- move the logo to x:600 over 2 seconds
this.tweens.add({
targets: logo,
x: 600,
duration: 2000,
ease: 'Power2'
});this.tweensTweenManageradd()js
// 在场景的create()方法中:
const logo = this.add.image(100, 300, 'logo');
// 基础补间——在2秒内将logo移动到x:600位置
this.tweens.add({
targets: logo,
x: 600,
duration: 2000,
ease: 'Power2'
});this.tweensTweenManageradd()Core Concepts
核心概念
Tween Lifecycle
补间生命周期
Created -> Active () -> Start Delayed () -> Playing (, per frame) -> Yoyo/Repeat (, ) -> Loop () -> Complete (, then auto-destroyed unless ).
onActivedelayonStartonUpdateonYoyoonRepeatonLooponCompletepersist: true创建 -> 激活() -> 延迟启动() -> 播放中(,每帧触发) -> 往返/重复(、) -> 循环() -> 完成(,除非设置,否则会自动销毁)。
onActivedelayonStartonUpdateonYoyoonRepeatonLooponCompletepersist: trueFire-and-Forget Design
"即开即忘"设计
Tweens auto-destroy after completion. You do not need to store a reference unless you want to control them later. Set in the config to keep a tween alive after completion for replay via or . You must manually call on persisted tweens when done.
persist: truetween.play()tween.restart()tween.destroy()补间完成后会自动销毁。除非你之后需要控制它,否则无需存储引用。若要在补间完成后保留它以便通过或重播,请在配置中设置。对于持久化的补间,使用完毕后必须手动调用。
tween.play()tween.restart()persist: truetween.destroy()Targets
目标对象
The property accepts a single object, an array of objects, or a function that returns either. Targets are typically Game Objects but can be any JavaScript object with numeric properties. A tween will not manipulate any property that begins with an underscore.
targetsjs
// Single target
this.tweens.add({ targets: sprite, alpha: 0, duration: 500 });
// Multiple targets
this.tweens.add({ targets: [sprite1, sprite2, sprite3], y: 100, duration: 1000 });targetsjs
// 单个目标
this.tweens.add({ targets: sprite, alpha: 0, duration: 500 });
// 多个目标
this.tweens.add({ targets: [sprite1, sprite2, sprite3], y: 100, duration: 1000 });Property Values
属性值
js
this.tweens.add({
targets: sprite,
x: 400, // absolute value
y: '-=100', // relative (subtract 100 from current)
rotation: '+=3.14', // relative (add to current)
alpha: { value: 0, duration: 300, ease: 'Cubic.easeIn' }, // per-property config
scale: [0.5, 1.5, 1], // array: interpolates through values over duration
angle: function (target, key, value, targetIndex, totalTargets, tween) {
return targetIndex * 90; // function: called once per target
},
duration: 1000
});Array values use linear interpolation by default; override with the config (, , ).
interpolation'linear''bezier''catmull'js
this.tweens.add({
targets: sprite,
x: 400, // 绝对值
y: '-=100', // 相对值(从当前值减去100)
rotation: '+=3.14', // 相对值(加到当前值上)
alpha: { value: 0, duration: 300, ease: 'Cubic.easeIn' }, // 单属性配置
scale: [0.5, 1.5, 1], // 数组:在持续时间内插值遍历这些值
angle: function (target, key, value, targetIndex, totalTargets, tween) {
return targetIndex * 90; // 函数:每个目标调用一次
},
duration: 1000
});数组值默认使用线性插值;可通过配置项覆盖(可选值:、、)。
interpolation'linear''bezier''catmull'Common Patterns
常见模式
Basic Tween
基础补间
js
this.tweens.add({
targets: this.player,
x: 500,
y: 300,
duration: 1000,
ease: 'Sine.easeInOut'
});js
this.tweens.add({
targets: this.player,
x: 500,
y: 300,
duration: 1000,
ease: 'Sine.easeInOut'
});Multiple Properties with Per-Property Config
多属性与单属性配置
js
this.tweens.add({
targets: this.enemy,
x: { value: 600, duration: 1500, ease: 'Bounce.easeOut' },
y: { value: 200, duration: 1000, ease: 'Power2' },
alpha: { value: 0.5, duration: 500, delay: 1000 }
});js
this.tweens.add({
targets: this.enemy,
x: { value: 600, duration: 1500, ease: 'Bounce.easeOut' },
y: { value: 200, duration: 1000, ease: 'Power2' },
alpha: { value: 0.5, duration: 500, delay: 1000 }
});Yoyo and Repeat
往返与重复
js
this.tweens.add({
targets: this.coin,
y: '-=50',
duration: 600,
ease: 'Sine.easeInOut',
yoyo: true, // returns to start value after reaching end
hold: 200, // pause 200ms at the end value before yoyo-ing back
repeat: -1, // -1 = infinite, 0 = play once, 1 = play twice, etc.
repeatDelay: 300 // pause 300ms before each repeat
});repeatrepeatloopBaseTweenrepeatloopjs
this.tweens.add({
targets: this.coin,
y: '-=50',
duration: 600,
ease: 'Sine.easeInOut',
yoyo: true, // 到达结束值后返回起始值
hold: 200, // 在结束值处暂停200毫秒后再往返
repeat: -1, // -1 = 无限重复,0 = 播放一次,1 = 播放两次,以此类推
repeatDelay: 300 // 每次重复前暂停300毫秒
});repeatrepeatloopBaseTweenrepeatloopStagger
交错动画
Stagger offsets a value across multiple targets via :
this.tweens.stagger()js
// 100ms delay between each target
delay: this.tweens.stagger(100)
// From center outward
delay: this.tweens.stagger(200, { from: 'center' })
// Range: distribute 0-1000ms across targets
delay: this.tweens.stagger([0, 1000])
// Grid stagger with easing
delay: this.tweens.stagger(500, { grid: [10, 6], from: 'center', ease: 'Cubic.easeOut' })StaggerConfig: (offset), (string/function), (///index), ([w, h]).
starteasefrom'first''center''last'grid通过可在多个目标间偏移值:
this.tweens.stagger()js
// 每个目标之间延迟100毫秒
delay: this.tweens.stagger(100)
// 从中心向外扩散
delay: this.tweens.stagger(200, { from: 'center' })
// 范围:在目标间分配0-1000毫秒的延迟
delay: this.tweens.stagger([0, 1000])
// 带缓动的网格交错
delay: this.tweens.stagger(500, { grid: [10, 6], from: 'center', ease: 'Cubic.easeOut' })StaggerConfig配置项: (偏移量)、(字符串/函数)、(///索引)、([宽, 高])。
starteasefrom'first''center''last'gridTween Chain
补间链
A plays tweens in sequence. Each tween in the chain starts after the previous one completes:
TweenChainjs
this.tweens.chain({
targets: this.player,
tweens: [
{ x: 300, duration: 1000, ease: 'Power2' },
{ y: 500, duration: 800, ease: 'Bounce.easeOut' },
{ scale: 2, duration: 500 },
{ alpha: 0, duration: 400 }
],
loop: 1, // loop the entire chain once (plays twice total)
loopDelay: 500,
onComplete: function () {
console.log('Chain finished');
}
});Each entry in is a standard . Chain-level config supports , , , , , and chain-level callbacks. Per-tween callbacks (, , ) belong on individual entries. Use to append dynamically.
tweensTweenBuilderConfiglooploopDelaycompleteDelaypausedpersistonUpdateonRepeatonYoyochain.add(tweenConfigs)TweenChainjs
this.tweens.chain({
targets: this.player,
tweens: [
{ x: 300, duration: 1000, ease: 'Power2' },
{ y: 500, duration: 800, ease: 'Bounce.easeOut' },
{ scale: 2, duration: 500 },
{ alpha: 0, duration: 400 }
],
loop: 1, // 整个链循环一次(总共播放两次)
loopDelay: 500,
onComplete: function () {
console.log('链播放完成');
}
});tweensTweenBuilderConfiglooploopDelaycompleteDelaypausedpersistonUpdateonRepeatonYoyochain.add(tweenConfigs)Relative Values
相对值
js
this.tweens.add({
targets: sprite,
x: '+=200', // add 200 to current x
y: '-=50', // subtract 50 from current y
angle: '+=180',
duration: 1000
});js
this.tweens.add({
targets: sprite,
x: '+=200', // 在当前x值基础上加200
y: '-=50', // 在当前y值基础上减50
angle: '+=180',
duration: 1000
});Callbacks and Events
回调与事件
js
this.tweens.add({
targets: sprite,
x: 600,
duration: 2000,
// All callbacks receive (tween, targets, ...params)
onStart: function (tween, targets) { },
onUpdate: function (tween, targets) { }, // per-property, per-target, per-frame
onYoyo: function (tween, targets) { },
onRepeat: function (tween, targets) { },
onLoop: function (tween, targets) { },
onComplete: function (tween, targets) { },
onCompleteParams: ['extra', 'args'],
callbackScope: this
});
// Set callback after creation
tween.setCallback('onComplete', function (tween, targets) { }, []);
// Event emitter style (tweens extend EventEmitter)
tween.on('complete', function (tween, targets) { });js
this.tweens.add({
targets: sprite,
x: 600,
duration: 2000,
// 所有回调都会接收参数(tween, targets, ...params)
onStart: function (tween, targets) { },
onUpdate: function (tween, targets) { }, // 每帧、每个属性、每个目标触发
onYoyo: function (tween, targets) { },
onRepeat: function (tween, targets) { },
onLoop: function (tween, targets) { },
onComplete: function (tween, targets) { },
onCompleteParams: ['extra', 'args'],
callbackScope: this
});
// 创建后设置回调
tween.setCallback('onComplete', function (tween, targets) { }, []);
// 事件发射器风格(补间继承自EventEmitter)
tween.on('complete', function (tween, targets) { });Number Tweens
数值补间
A Number Tween has no target object. It tweens between two numeric values:
js
const counter = this.tweens.addCounter({
from: 0,
to: 100,
duration: 2000,
ease: 'Linear',
onUpdate: function (tween) {
const value = tween.getValue();
console.log(value); // 0 ... 100
}
});数值补间没有目标对象,它在两个数值之间进行补间:
js
const counter = this.tweens.addCounter({
from: 0,
to: 100,
duration: 2000,
ease: 'Linear',
onUpdate: function (tween) {
const value = tween.getValue();
console.log(value); // 0 ... 100
}
});Controlling and Killing Tweens
控制与销毁补间
js
const tween = this.tweens.add({ targets: sprite, x: 600, duration: 2000, persist: true });
// Playback control
tween.pause(); tween.resume();
tween.stop(); // flags for removal; fires onStop
tween.restart(); // reset and replay from beginning
tween.seek(1000); // seek to 1000ms (suppresses events by default)
tween.complete(); // immediately complete; fires onComplete
tween.completeAfterLoop(0); // finish after current loop
tween.forward(500); tween.rewind(500);
tween.setTimeScale(0.5); // per-tween speed
tween.updateTo('x', 800); // change end value mid-tween
// Manager-level control
this.tweens.killAll(); // destroy all tweens
this.tweens.killTweensOf(sprite); // destroy tweens on target
this.tweens.isTweening(sprite); // boolean check
this.tweens.pauseAll(); this.tweens.resumeAll();
this.tweens.setGlobalTimeScale(0.5); // global speedjs
const tween = this.tweens.add({ targets: sprite, x: 600, duration: 2000, persist: true });
// 播放控制
tween.pause(); tween.resume();
tween.stop(); // 标记为待移除;触发onStop
tween.restart(); // 重置并从头重播
tween.seek(1000); // 跳转到1000毫秒位置(默认抑制事件)
tween.complete(); // 立即完成;触发onComplete
tween.completeAfterLoop(0); // 当前循环结束后完成
tween.forward(500); tween.rewind(500);
tween.setTimeScale(0.5); // 单个补间的播放速度
tween.updateTo('x', 800); // 补间播放中修改结束值
// 管理器级控制
this.tweens.killAll(); // 销毁所有补间
this.tweens.killTweensOf(sprite); // 销毁目标对象上的补间
this.tweens.isTweening(sprite); // 布尔值检查
this.tweens.pauseAll(); this.tweens.resumeAll();
this.tweens.setGlobalTimeScale(0.5); // 全局播放速度Configuration Reference
配置参考
TweenBuilderConfig
TweenBuilderConfig
| Property | Type | Default | Description |
|---|---|---|---|
| any / any[] | (required) | Object(s) to tween. |
| number | | Duration in ms. |
| number / function | | Delay before start (ms). Accepts |
| string / function | | Easing function name or custom function. |
| array | | Parameters for parameterized easing (e.g. Elastic). |
| number | | Hold at end value before yoyo (ms). |
| number | | Per-property repeat count. |
| number | | Delay before each repeat (ms). |
| boolean | | Reverse back to start after reaching end. |
| boolean | | Toggle flip on yoyo/repeat. |
| number | | Tween-level loop count. |
| number | | Delay before each loop (ms). |
| number | | Delay before |
| boolean | | Start paused. Call |
| boolean | | Keep alive after completion. |
| object | -- | Explicit property config map (alt to top-level props). |
| string / function | -- | For array values: |
| any | tween | |
| Callbacks | function | -- | |
| Property | Type | Default | Description |
|---|---|---|---|
| any / any[] | (必填) | 要补间的对象。 |
| number | | 持续时间(毫秒)。 |
| number / function | | 启动前的延迟(毫秒)。支持 |
| string / function | | 缓动函数名称或自定义函数。 |
| array | | 参数化缓动的参数(例如Elastic)。 |
| number | | 往返前在结束值处停留的时间(毫秒)。 |
| number | | 单属性重复次数。 |
| number | | 每次重复前的延迟(毫秒)。 |
| boolean | | 到达结束值后反向回到起始值。 |
| boolean | | 在往返/重复时切换翻转状态。 |
| number | | 补间级循环次数。 |
| number | | 每次循环前的延迟(毫秒)。 |
| number | | |
| boolean | | 启动时处于暂停状态。调用 |
| boolean | | 完成后保持存活状态。 |
| object | -- | 显式的属性配置映射(替代顶层属性)。 |
| string / function | -- | 针对数组值: |
| any | tween | 回调函数的 |
| Callbacks | function | -- | |
TweenChainBuilderConfig
TweenChainBuilderConfig
| Property | Type | Default | Description |
|---|---|---|---|
| any / any[] | -- | Default targets inherited by child tweens. |
| TweenBuilderConfig[] | (required) | Array of tween configs to play in sequence. |
| number | | Times to loop the entire chain. |
| number | | Delay before each loop (ms). |
| number | | Delay before |
| boolean | | Start paused. |
| boolean | | Keep alive after completion. |
| Callbacks | function | -- | |
| Property | Type | Default | Description |
|---|---|---|---|
| any / any[] | -- | 子补间继承的默认目标对象。 |
| TweenBuilderConfig[] | (必填) | 要按顺序播放的补间配置数组。 |
| number | | 整个链的循环次数。 |
| number | | 每次循环前的延迟(毫秒)。 |
| number | | |
| boolean | | 启动时处于暂停状态。 |
| boolean | | 完成后保持存活状态。 |
| Callbacks | function | -- | |
NumberTweenBuilderConfig
NumberTweenBuilderConfig
| Property | Type | Default | Description |
|---|---|---|---|
| number | | Start value. |
| number | | End value. |
| number | | Duration in ms. |
| string / function | | Easing function. |
| All standard timing | -- | -- | |
| All standard callbacks | -- | -- | Same callback set as TweenBuilderConfig. |
| Property | Type | Default | Description |
|---|---|---|---|
| number | | 起始值。 |
| number | | 结束值。 |
| number | | 持续时间(毫秒)。 |
| string / function | | 缓动函数。 |
| 所有标准时序配置 | -- | -- | |
| 所有标准回调 | -- | -- | 与TweenBuilderConfig相同的回调集合。 |
TweenPropConfig (Per-Property Object)
TweenPropConfig(单属性对象)
Used when a property value is an object instead of a number/string. Supports: , , , , , , , , , , , , , . All override the tween-level defaults for that one property.
valuegetActivegetEndgetStarteasedelaydurationyoyoholdrepeatrepeatDelayflipXflipYinterpolation当属性值为对象而非数字/字符串时使用。支持:、、、、、、、、、、、、、。所有配置都会覆盖该属性对应的补间级默认值。
valuegetActivegetEndgetStarteasedelaydurationyoyoholdrepeatrepeatDelayflipXflipYinterpolationEasing Functions
缓动函数
All easing names are case-insensitive. Use the string name in the config property.
ease所有缓动函数名称不区分大小写。在配置属性中使用字符串名称即可。
easePower Aliases
功率别名
| Name | Equivalent |
|---|---|
| |
| |
| |
| |
| |
| Name | Equivalent |
|---|---|
| |
| |
| |
| |
| |
Full Easing List
完整缓动列表
Each type supports , , variants. The bare name defaults to Out.
.easeIn.easeOut.easeInOutTypes: , , , , , , , , , .
QuadCubicQuartQuintSineExpoCircElasticBackBounceUsage: , , , (same as ).
'Sine.easeInOut''Bounce.easeIn''Cubic.easeOut''Back''Back.easeOut'Special: (no easing), (discrete steps -- ).
LinearSteppedeaseParams: [numSteps]Custom: where is 0 to 1.
ease: function (t) { return t * t; }t每种类型都支持、、变体。仅使用类型名称时默认使用缓出效果。
.easeIn.easeOut.easeInOut类型: 、、、、、、、、、。
QuadCubicQuartQuintSineExpoCircElasticBackBounce用法: 、、、(等同于)。
'Sine.easeInOut''Bounce.easeIn''Cubic.easeOut''Back''Back.easeOut'特殊类型: (无缓动)、(离散步骤——)。
LinearSteppedeaseParams: [numSteps]自定义缓动: ,其中的取值范围是0到1。
ease: function (t) { return t * t; }tEvents
事件
Tweens (and TweenChains) extend . You can listen via :
EventEmitter.on()| Event String | Constant | Fires When |
|---|---|---|
| | Tween added to manager |
| | Playback begins (after delay) |
| | Property updates each frame |
| | Property begins yoyo-ing back |
| | Property repeats |
| | Entire tween loops |
| | Tween finishes |
| | |
| | |
| | |
Event listener signature for Tween events: . During seeking (), events and callbacks are suppressed by default.
function(tween, targets)tween.isSeeking === true补间(以及补间链)继承自。你可以通过监听事件:
EventEmitter.on()| Event String | Constant | Fires When |
|---|---|---|
| | 补间被添加到管理器时 |
| | 播放开始时(延迟结束后) |
| | 属性每帧更新时 |
| | 属性开始往返时 |
| | 属性重复时 |
| | 整个补间循环时 |
| | 补间完成时 |
| | 调用 |
| | 调用 |
| | 调用 |
补间事件的监听器签名:。在跳转播放位置时(),默认会抑制事件和回调。
function(tween, targets)tween.isSeeking === trueAPI Quick Reference
API速查手册
TweenManager (this.tweens
)
this.tweensTweenManager(this.tweens
)
this.tweens| Method | Returns | Purpose |
|---|---|---|
| | Create, add, and start a tween. |
| | Create multiple tweens at once. |
| | Create without adding. Use |
| | Create and start a sequential chain. |
| | Number tween (no target). |
| | Stagger function for delay/property values. |
| | Add a pre-created tween to the manager. |
| | Remove without destroying. |
| | Check if tween is in manager. |
| | All active tweens (copy). |
| | Tweens affecting a target. |
| | Is target being tweened? |
| | Destroy tweens. |
| | Pause/resume all tweens. |
| | Global speed. |
| | Limit tick rate (default 240). |
| | Configure lag smoothing. |
| | Iterate all tweens. |
| Method | Returns | Purpose |
|---|---|---|
| | 创建、添加并启动一个补间。 |
| | 一次性创建多个补间。 |
| | 创建补间但不添加到管理器。之后使用 |
| | 创建并启动一个顺序播放的补间链。 |
| | 数值补间(无目标对象)。 |
| | 用于延迟/属性值的交错函数。 |
| | 将预创建的补间添加到管理器。 |
| | 移除补间但不销毁。 |
| | 检查补间是否在管理器中。 |
| | 所有活跃补间的副本。 |
| | 影响目标对象的补间。 |
| | 目标对象是否正在被补间? |
| | 销毁补间。 |
| | 暂停/恢复所有补间。 |
| | 设置/获取全局播放速度。 |
| | 限制帧率(默认240)。 |
| | 配置延迟平滑处理。 |
| | 遍历所有补间。 |
Tween Instance
补间实例
| Method | Purpose |
|---|---|
| Playback control. |
| Stop and flag for removal. Fires |
| Reset and replay. |
| Immediately complete. |
| Complete after N more loops. |
| Seek to ms offset. |
| Step forward/back. |
| Per-tween speed. |
| Set callback after creation. |
| Current TweenData value. |
| Change end value mid-tween. |
| State checks. |
| Cleanup. |
Key properties: , , , (0-1), (0-1 including loops), , , , , (TweenData[]), , .
targetsdurationelapsedprogresstotalProgresstotalDurationtimeScalepausedpersistdataisInfiniteisNumberTween| Method | Purpose |
|---|---|
| 播放控制。 |
| 停止并标记为待移除。触发 |
| 重置并重播。 |
| 立即完成。 |
| 再播放N次循环后完成。 |
| 跳转到指定毫秒偏移位置。 |
| 向前/向后跳转指定毫秒。 |
| 设置/获取单个补间的播放速度。 |
| 创建后设置回调。 |
| 获取当前TweenData的值。 |
| 补间播放中修改结束值。 |
| 状态检查。 |
| 清理资源。 |
关键属性: 、、、(0-1)、(0-1,包含循环)、、、、、(TweenData[])、、。
targetsdurationelapsedprogresstotalProgresstotalDurationtimeScalepausedpersistdataisInfiniteisNumberTweenTweenChain Instance
补间链实例
Extends . Has all tween playback methods (, , , , , , etc.) plus to append tweens dynamically. Properties: , .
BaseTweenplaypauseresumestoprestartcompleteadd(tweenConfigs)currentTweencurrentIndex继承自。拥有所有补间播放方法(、、、、、等),还支持动态追加补间。属性: 、。
BaseTweenplaypauseresumestoprestartcompleteadd(tweenConfigs)currentTweencurrentIndexGotchas
注意事项
- Underscore properties are ignored. A tween will skip any property whose name starts with .
_ - Tweens auto-destroy. If you store a reference to a tween and try to use it after completion, it may be destroyed. Set to keep it alive, but you must
persist: trueit yourself when done.destroy() - vs
repeat.loopis per-property (on TweenData).repeatrestarts the entire tween. Aloopof 1 means the property plays twice total.repeat - means
loop: -1never fires. An infinitely looping tween never completes. UseonCompleteto end it gracefully.completeAfterLoop() - Seeking suppresses events. When calling , events and callbacks are not dispatched unless you pass
tween.seek()as the third argument.true - Stagger only works with multiple targets. Using on a single-target tween has no visible stagger effect.
this.tweens.stagger() - Destroyed targets. A tween completes early if its target has set to
isDestroyed. Always clean up tweens before destroying the objects they reference, or rely on this auto-check.true - TweenManager.timeScale multiplies with Tween.timeScale. The effective speed is . Setting either to 0 freezes the tween.
managerTimeScale * tweenTimeScale - Duration cannot be zero. Internally clamped to a minimum of 0.01ms.
- TweenChain are inherited. If you set
targetsat the chain level, individual tweens in the chain inherit them unless they specify their own.targets
- 下划线开头的属性会被忽略。 补间会跳过任何名称以下划线开头的属性。
- 补间会自动销毁。 如果你存储了补间的引用,在补间完成后尝试使用它可能会失败,因为它已被销毁。设置可保持其存活,但使用完毕后必须手动调用
persist: true。destroy() - vs
repeat。loop是属性级的(属于TweenData)。repeat会重启整个补间。loop为1意味着该属性总共播放两次。repeat - 意味着
loop: -1永远不会触发。 无限循环的补间永远不会完成。使用onComplete可优雅地结束它。completeAfterLoop() - 跳转播放位置会抑制事件。 调用时,默认不会触发事件和回调,除非你将第三个参数设为
tween.seek()。true - 交错动画仅对多目标有效。 对单目标补间使用不会产生可见的交错效果。
this.tweens.stagger() - 已销毁的目标对象。 如果补间的目标对象的设为
isDestroyed,补间会提前完成。销毁对象前请务必清理相关补间,或依赖这个自动检查机制。true - TweenManager.timeScale与Tween.timeScale会相乘。 实际播放速度是。将其中任何一个设为0都会冻结补间。
managerTimeScale * tweenTimeScale - 持续时间不能为0。 内部会将其钳制到最小0.01毫秒。
- 补间链的会被继承。 如果在链级设置了
targets,链中的单个补间会继承该目标,除非它们自己指定了目标。targets
Source File Map
源文件映射
| File | Purpose |
|---|---|
| Scene plugin. |
| Individual tween. Targets, TweenData array, seeking, update. |
| Sequential tween playback via ordered child Tweens. |
| Shared base. EventEmitter, callbacks, state machine. |
| Per-property state: duration, delay, yoyo, repeat, progress. |
| Numeric property tweening (extends BaseTweenData). |
| Texture frame tweening (extends BaseTweenData). |
| Parses config into Tween instance. |
| Parses config into TweenChain instance. |
| Builds target-less number tweens. |
| Creates stagger functions. |
| Event constants ( |
| JSDoc typedefs for all config objects. |
| Maps ease string names to functions. |
| File | Purpose |
|---|---|
| 场景插件。包含 |
| 单个补间。处理目标对象、TweenData数组、跳转播放位置、更新逻辑。 |
| 通过有序的子补间实现顺序播放。 |
| 共享基类。包含EventEmitter、回调、状态机。 |
| 单属性状态:持续时间、延迟、往返、重复、进度。 |
| 数值属性补间(继承自BaseTweenData)。 |
| 纹理帧补间(继承自BaseTweenData)。 |
| 将配置解析为Tween实例。 |
| 将配置解析为TweenChain实例。 |
| 构建无目标的数值补间。 |
| 创建交错函数。 |
| 事件常量( |
| 所有配置对象的JSDoc类型定义。 |
| 将缓动字符串名称映射到对应函数。 |