AnimationState

.Animations. AnimationState

动画状态组件. 该组件提供了将动画应用于游戏对象的功能.它负责 加载,对动画进行排队以便稍后回放,在动画和设置之间进行混合 当前动画帧到拥有该组件的游戏对象. 这个组件作为一个实例存在于任何定义了它的游戏对象中,比如精灵. 您可以通过 `anims` 属性访问其属性和方法,即. `Sprite.anims` . 除了播放存储在全局动画管理器中的动画,该组件 也可以创建本地存储在其中的动画.请参见 `create` 方法 更多详情. 在Phaser 3.50之前,这个组件被称为 `Animation` ,生活在 `Phaser.GameObjects.Components` namespace. It was renamed to `AnimationState` 以便在浏览文档时更好地识别其真正目的.

Constructor

new AnimationState(parent)

Since:
  • 3.0.0
Parameters:
Name Type Description
parent Phaser.GameObjects.GameObject 该动画组件所属的游戏对象.

Members

accumulator :number

Since:
  • 3.0.0
Default Value:
  • 0
内部时间溢出累加器. 作为 `update` 步骤的一部分,添加了 `delta` 时间.
Type:
  • number

animationManager :Phaser.Animations.AnimationManager

Since:
  • 3.0.0
对全局动画管理器的引用.
Type:

(protected) anims :Phaser.Structs.Map.<string, Phaser.Animations.Animation>

Since:
  • 3.50.0
本地存储在此动画组件中的动画. 不要直接修改此地图的内容,而是使用 改为使用此类的 `add` , `create` 和 `remove` 方法.
Type:

(nullable) currentAnim :Phaser.Animations.Animation

Since:
  • 3.0.0
Default Value:
  • null
加载到此动画组件中的当前动画. 如果尚未加载动画,将被 `null` 替换.
Type:

(nullable) currentFrame :Phaser.Animations.AnimationFrame

Since:
  • 3.0.0
Default Value:
  • null
此动画组件显示的当前动画帧. 如果尚未加载动画,将被 `null` 替换.
Type:

delay :number

Since:
  • 3.50.0
Default Value:
  • 0
开始播放当前动画之前的延迟时间,以毫秒为单位. 该值在新动画加载到该组件中时设置,并且应该 被视为只读,因为一旦播放开始就更改它不会改变 动画.要更改延迟,请在 `PlayAnimationConfig` 对象中提供一个新值. 在Phaser 3.50之前,该房产是私有的,称为 `_delay` .
Type:
  • number

delayCounter :number

Since:
  • 3.50.0
Default Value:
  • 0
一种计数器,记录回放开始前还有多少延迟时间(以毫秒为单位). 这是通过 `playAfterDelay` 方法设置的,尽管它可以在运行时修改 如果需要,只要动画还没有开始播放.
Type:
  • number

duration :number

Since:
  • 3.0.0
Default Value:
  • 0
当前动画的持续时间,以毫秒为单位. 该值在新动画加载到该组件中时设置,并且应该 被视为只读,因为一旦播放开始就更改它不会改变 动画.要更改持续时间,请在`PlayAnimationConfig`对象中提供一个新值.
Type:
  • number

forward :boolean

Since:
  • 3.0.0
Default Value:
  • true
播放头是向前移动( `true` )还是向后移动( `false` )?
Type:
  • boolean

frameRate :number

Since:
  • 3.0.0
Default Value:
  • 0
当前动画的回放帧速率,以每秒帧数表示. 该值在新动画加载到该组件中时设置,并且应该 被视为只读,因为一旦播放开始就更改它不会改变 动画.要更改帧速率,请在`PlayAnimationConfig`对象中提供一个新值.
Type:
  • number

hasStarted :boolean

Since:
  • 3.50.0
Default Value:
  • false
当前动画是已经开始播放了,还是在等待延迟到期?
Type:
  • boolean

hideOnComplete :boolean

Since:
  • 3.50.0
当动画完成时,游戏对象的 `visible` 属性应该设置为 `false` 吗? 该值在新动画加载到该组件时设置,但也可以修改 在运行时,假设动画仍在活跃地播放.
Type:
  • boolean

inReverse :boolean

Since:
  • 3.50.0
Default Value:
  • false
内部触发器,告知组件是否应该播放动画 在反向模式下( `true` )或不( `false` ).这是因为 `forward` 可以 被 `yoyo` 功能改变. 在Phaser 3.50之前,该房产是私有的,称为 `_reverse` .
Type:
  • boolean

(readonly) isPaused :boolean

Since:
  • 3.4.0
如果当前动画暂停,则为 `true` ,否则为 `false` .
Type:
  • boolean

isPlaying :boolean

Since:
  • 3.0.0
Default Value:
  • false
一部动画目前是否在播放?
Type:
  • boolean

msPerFrame :number

Since:
  • 3.0.0
Default Value:
  • 0
每帧的毫秒数,不包括可能存在于 动画数据. 该值是在新动画加载到该组件中时计算的,应该 被视为只读.更改它不会改变播放速度.
Type:
  • number

(nullable) nextAnim :string|Phaser.Animations.Animation|Phaser.Types.Animations.PlayAnimationConfig

Since:
  • 3.16.0
Default Value:
  • null
要加载到此动画组件中的下一个动画的键,实例或配置 当前动画完成时. 如果没有动画排队,将被 `null` 替换.
Type:

nextAnimsQueue :array

Since:
  • 3.24.0
当前动画完成时要加载到此动画组件中的动画队列. 通过 `chain` 方法填充此队列.
Type:
  • array

nextTick :number

Since:
  • 3.0.0
Default Value:
  • 0
下一个动画帧将改变的时间点. 作为 `update` 步骤的一部分,将该值与 `accumulator` 进行比较.
Type:
  • number

parent :Phaser.GameObjects.GameObject

Since:
  • 3.0.0
该动画组件所属的游戏对象. 您通常可以从游戏对象访问该组件 通过 `this.anims` 物业.
Type:

pendingRepeat :boolean

Since:
  • 3.0.0
Default Value:
  • false
跟踪待定重复的内部标志.
Type:
  • boolean

repeat :number

Since:
  • 3.50.0
Default Value:
  • 0
当前动画重复播放的次数. 如果-1,表示动画永远重复. 该值在新动画加载到该组件中时设置,并且应该 被视为只读,因为一旦播放开始就更改它不会改变 动画.要更改重复次数,请在`PlayAnimationConfig`对象中提供一个新值. 在Phaser 3.50之前,该房产是私有的,称为 `_repeat` .
Type:
  • number

repeatCounter :number

Since:
  • 3.0.0
Default Value:
  • 0
一种计数器,记录还剩多少次重复运行. 该值在新动画加载到该组件时设置,但也可以修改 在运行时.
Type:
  • number

repeatDelay :number

Since:
  • 3.0.0
Default Value:
  • 0
开始重复播放当前动画之前等待的毫秒数. 该值在新动画加载到该组件时设置,但也可以修改 在运行时. 您可以通过在`PlayAnimationConfig`对象中提供新值来更改重复延迟. 在Phaser 3.50之前,该房产是私有的,名为 `_repeatDelay` .
Type:
  • number

showOnStart :boolean

Since:
  • 3.50.0
当动画开始播放时,游戏对象的 `visible` 属性是否应该设置为 `true` ? 这将在可能已经设置的任何延迟之后发生. 该值在新动画加载到该组件时设置,但也可以修改 在运行时,假设动画当前被延迟.
Type:
  • boolean

skipMissedFrames :boolean

Since:
  • 3.0.0
Default Value:
  • true
如果时间滞后,跳过帧,还是总是提前?
Type:
  • boolean

(protected) textureManager :Phaser.Textures.TextureManager

Since:
  • 3.50.0
对纹理管理器的引用.
Type:

timeScale :number

Since:
  • 3.50.0
Default Value:
  • 1
时间比例因子. 您可以调整此值来修改当前动画的时间流逝 玩耍.例如,将其设置为2会使动画播放速度提高一倍.还是设定 将它设置为0.5会降低动画速度. 您可以在运行时更改该值,或者通过`PlayAnimationConfig`设置该值. 在Phaser 3.50之前,该房产是私有的,称为 `_timeScale` .
Type:
  • number

yoyo :boolean

Since:
  • 3.50.0
Default Value:
  • false
现在的动画yoyo该不该?yoyos将从头到尾反向播放的动画 开始,然后重复或完成.没有悠悠球的动画 从头玩到尾. 该值在新动画加载到该组件时设置,但也可以修改 在运行时. 您可以通过在 `PlayAnimationConfig` 对象中提供新值来更改yoyo. 在Phaser 3.50之前,该房产是私有的,称为 `_yoyo` .
Type:
  • boolean

Methods

chain(key) → {Phaser.GameObjects.GameObject}

Since:
  • 3.16.0
设置一个动画或一组动画,在当前动画完成或停止后,在将来播放. 当前动画必须进入 `completed` 状态才能发生这种情况,即.完成所有的重复,延迟等, 或者调用其中一个 `stop` 方法. 设定为永远重复的动画永远不会进入完成状态,除非停止. 您可以在任何点链接一个新动画,包括当前动画开始播放之前,播放期间或结束时(通过其 `animationcomplete` 事件). 链接动画是特定于游戏对象的,这意味着不同的游戏对象可以有不同的链接动画,而不会影响它们正在播放的全局动画. 调用这个没有参数的方法来重置所有当前链接的动画.
Parameters:
Name Type Description
key string | Phaser.Animations.Animation | Phaser.Types.Animations.PlayAnimationConfig | Array.<string> | Array.<Phaser.Animations.Animation> | Array.<Phaser.Types.Animations.PlayAnimationConfig> 要播放的动画的基于字符串的键,或动画实例,或`PlayAnimationConfig`对象,或它们的数组.
Returns:
拥有此动画组件的游戏对象.
Type
Phaser.GameObjects.GameObject

complete() → {Phaser.GameObjects.GameObject}

Since:
  • 3.50.0
当前动画已完成.这将调度 `ANIMATION_COMPLETE` 事件. 此方法由动画实例调用,通常不应直接调用. 如果没有加载动画,将不会调度任何事件. 如果另一个动画已经排队等待播放,它将在事件触发后启动.
Fires:
Returns:
拥有此动画组件的游戏对象.
Type
Phaser.GameObjects.GameObject

create(config) → {Phaser.Animations.Animation|false}

Since:
  • 3.50.0
创建一个新的动画,它是这个精灵的本地动画. 当一个精灵拥有一个动画时,它将被排除在全局动画管理器之外,这意味着 您可以自由使用可能已经在那里定义的密钥.除非你特别需要雪碧 要有一个独特的动画,你应该倾向于使用全局动画,因为它们允许 在多个精灵之间使用相同的动画,节省内存.然而,如果这个雪碧 是唯一使用这个动画的人,在这里创建它是明智的. 如果给出一个无效的密钥,这个方法将返回 `false` . 如果您传递一个已经在本地存在的动画的密钥,该动画将被返回. 一个全新的动画只有在密钥有效并且没有被这个精灵使用的情况下才会被创建. 如果您希望重用现有的键,请先调用 `remove` 方法,然后调用此方法.
Parameters:
Name Type Description
config Phaser.Types.Animations.Animation 动画的配置设置.
Returns:
已创建的动画,如果该键已在使用中,则为 `false` .
Type
Phaser.Animations.Animation | false

destroy()

Since:
  • 3.0.0
销毁此动画组件. 注销事件侦听器并清除其引用.

exists(key) → {boolean}

Since:
  • 3.50.0
检查给定的键是否已经在本地存储在这个精灵的动画中使用.
Parameters:
Name Type Description
key string 要检查的动画的键.
Returns:
如果动画存在于本地,则为 `true` ;如果密钥可用,则为 `false` ,否则为没有本地动画.
Type
boolean

generateFrameNames(key, configopt) → {Array.<Phaser.Types.Animations.AnimationFrame>}

Since:
  • 3.50.0
生成Phaser.Types.Animations.AnimationFrame的数组.纹理键和配置对象中的对象. 根据给定的Phaser.Types.Animations.GenerateFrameNames. 这是一个辅助方法,旨在使您更容易从纹理图谱中提取所有的帧名称. 如果您正在使用精灵表,请改为使用 `generateFrameNumbers` 方法. 示例: 如果你有一个纹理图册,叫做 `gems` ,它包含6个帧,叫做 `ruby_0001` , `ruby_0002` ,等等, 然后可以使用: `this.anims.generateFramenames(`gems` ,{ prefix: `ruby_` ,end: 6,zeroPad: 4 })`.调用此方法. `end` 值告诉它查找6个帧,递增编号,都以前缀 `ruby_` 开始. `zeroPad` 值告诉它有多少个零填充数字.要使用此方法创建动画,您可以执行以下操作: ```javascript this.anims.create({ key: 'ruby', repeat: -1, frames: this.anims.generateFrameNames('gems', { prefix: 'ruby_', end: 6, zeroPad: 4 }) }); ``` 详情请看动画例子.
Parameters:
Name Type Attributes Description
key string 包含动画帧的纹理的关键点.
config Phaser.Types.Animations.GenerateFrameNames <optional>
动画帧名称的配置对象.
Returns:
Type
Array.<Phaser.Types.Animations.AnimationFrame>

generateFrameNumbers(key, config) → {Array.<Phaser.Types.Animations.AnimationFrame>}

Since:
  • 3.50.0
生成Phaser.Types.Animations.AnimationFrame的数组.纹理键和配置对象中的对象. 根据给定的Phaser.Types.Animations.GenerateFrameNumbers. 如果你使用的是纹理贴图,请使用 `generateFrameNames` 方法. 这是一个辅助方法,旨在使您更容易从精灵表中提取帧. 如果你使用的是纹理贴图,请使用 `generateFrameNames` 方法. 示例: 如果您加载了一个名为 `explosion` 的精灵表,并且它包含12个帧,那么您可以使用以下命令调用此方法: `this.anims.generateFrameNumbers('explosion', { start: 0, end: 12 })`. `end` 值告诉它在12帧后停止.要使用此方法创建动画,您可以执行以下操作: ```javascript this.anims.create({ key: 'boom', frames: this.anims.generateFrameNames('explosion', { start: 0, end: 12 }) }); ``` 请注意, `start` 是可选的,如果动画从第0帧开始,则不需要包含它. 要反向指定动画,请交换 `start` 和 `end` 值. 如果帧不是连续的,您可以传递一组帧号,例如: `this.anims.generateFrameNumbers('explosion', { frames: [ 0, 1, 2, 1, 2, 3, 4, 0, 1, 2 ] })` 更多详细信息,请参见动画示例和 `GenerateFrameNumbers` 配置文档.
Parameters:
Name Type Description
key string 包含动画帧的纹理的关键点.
config Phaser.Types.Animations.GenerateFrameNumbers 动画帧的配置对象.
Returns:
Type
Array.<Phaser.Types.Animations.AnimationFrame>

get(key) → {Phaser.Animations.Animation}

Since:
  • 3.50.0
获取在此精灵上本地创建的动画实例. 有关更多详细信息,请参见 `create` 方法.
Parameters:
Name Type Description
key string 要检索的动画的键.
Returns:
动画,如果密钥无效,则为 `null` .
Type
Phaser.Animations.Animation

getFrameName() → {string}

Since:
  • 3.50.0
返回该组件当前显示的动画帧的关键帧.
Returns:
该组件当前显示的动画帧的键,如果没有加载动画,则为空字符串.
Type
string

getName() → {string}

Since:
  • 3.50.0
返回当前加载到该组件中的动画的关键点. 在Phaser 3.50之前,这种方法被称为 `getCurrentKey` .
Returns:
当前加载到该组件中的动画的键,如果没有加载,则为空字符串.
Type
string

getProgress() → {number}

Since:
  • 3.4.0
返回一个介于0和1之间的值,该值指示动画完成的程度,忽略重复和yoyos. 该值基于当前帧及其在动画中的位置,而不是基于 动画的持续时间.
Returns: