Options
All
  • Public
  • Public/Protected
  • All
Menu

Class AnimationComponent

动画组件管理一组动画状态,控制它们的播放。 为了方便,动画组件还存储了一组动画剪辑。 每个剪辑都会独自创建一个关联的动画状态对象。 动画组件具有事件特性,它会派发一系列播放状态相关的事件。 参考 EventType

Hierarchy

Index

Constructors

constructor

Properties

Protected _clips

_clips: (null | AnimationClip)[] = []

Protected _crossFade

_crossFade: CrossFade = new CrossFade()

Protected _defaultClip

_defaultClip: AnimationClip | null = null

Private _enabled

_enabled: boolean = true
property

_enabled

Private _hasBeenPlayed

_hasBeenPlayed: boolean = false

Whether if crossFade() or play() has been called before this component starts.

_id

_id: string = idGenerator.getNewId()

For internal usage.

Protected _name

_name: string

Protected _nameToState

_nameToState: Record<string, AnimationState> = createMap(true)

_objFlags

_objFlags: number

sceneGetter

sceneGetter: null | (() => RenderScene) = null

node

node: Node = NullNode

该组件被附加到的节点。组件总会附加到一个节点。

property

node

example
cc.log(comp.node);

playOnLoad

playOnLoad: boolean = false

是否在组件开始运行时自动播放默认剪辑。 注意,若在组件开始运行前调用了 crossFadeplay(),此字段将不会生效。

Static EventType

EventType: EnumAlias<typeof EventType> = EventType

Static system

system: null = null

Accessors

scriptAsset

  • get scriptAsset(): null

isOnLoadCalled

  • get isOnLoadCalled(): number

clips

defaultClip

  • en

    获取或设置默认剪辑。 设置时,若指定的剪辑不在 this.clips 中则会被自动添加至 this.clips

    en

    获取或设置默认剪辑。 设置时,若指定的剪辑不在 this.clips 中则会被自动添加至 this.clips

    see

    playOnLoad

    Returns null | AnimationClip

  • en

    获取或设置默认剪辑。 设置时,若指定的剪辑不在 this.clips 中则会被自动添加至 this.clips

    en

    获取或设置默认剪辑。 设置时,若指定的剪辑不在 this.clips 中则会被自动添加至 this.clips

    see

    playOnLoad

    Parameters

    Returns void

enabled

  • get enabled(): boolean
  • set enabled(value: boolean): void

enabledInHierarchy

  • get enabledInHierarchy(): boolean

isValid

  • get isValid(): boolean
  • 表示该对象是否可用(被 destroy 后将不可用)。
    当一个对象的 destroy 调用以后,会在这一帧结束后才真正销毁。
    因此从下一帧开始 isValid 就会返回 false,而当前帧内 isValid 仍然会是 true。
    如果希望判断当前帧是否调用过 destroy,请使用 cc.isValid(obj, true),不过这往往是特殊的业务需求引起的,通常情况下不需要这样。

    default

    true

    readonly
    example
    import * as cc from 'cc';
    var node = new cc.Node();
    cc.log(node.isValid);    // true
    node.destroy();
    cc.log(node.isValid);    // true, still valid in this frame
    // after a frame...
    cc.log(node.isValid);    // false, destroyed in the end of last frame

    Returns boolean

name

  • get name(): string
  • set name(value: string): void

uuid

  • get uuid(): string

Methods

Optional Private preload

  • __preload(): void
  • __preload 在每次onLoad之前调用。
    它用于在内部初始化内置组件,
    以避免在每次公有方法调用之前检查是否调用了onLoad。
    如果支持脚本优先级,则应删除此方法。

    Returns void

Protected createState

destroyImmediate

  • _destroyImmediate(): void

destruct

  • _destruct(): void
  • Clear all references in the instance.

    NOTE: this method will not clear the getter or setter functions which defined in the instance of CCObject. You can override the _destruct method if you need, for example: _destruct: function () { for (var key in this) { if (this.hasOwnProperty(key)) { switch (typeof this[key]) { case 'string': this[key] = ''; break; case 'object': case 'function': this[key] = null; break; } } }

    Returns void

Protected doCreateState

Protected Optional getLocalBounds

  • getLocalBounds(out_rect: Rect): void
  • 如果组件的包围盒与节点不同,您可以实现该方法以提供自定义的轴向对齐的包围盒(AABB), 以便编辑器的场景视图可以正确地执行点选测试。

    Parameters

    • out_rect: Rect

      提供包围盒的 Rect

    Returns void

getRenderScene

  • _getRenderScene(): RenderScene

Private getStateByNameOrDefaultClip

  • getStateByNameOrDefaultClip(name?: undefined | string): null | AnimationState

instantiate

  • instantiate(cloned: any): any

onPreDestroy

  • _onPreDestroy(): void

Private removeStateOfAutomaticClip

Private syncAllowLastFrameEvent

  • _syncAllowLastFrameEvent(): void

Private syncDisallowLastFrameEvent

  • _syncDisallowLastFrameEvent(): void

addClip

addComponent

  • addComponent<T>(classConstructor: Constructor<T>): T | null
  • addComponent(className: string): Component | null

createState

  • 使用指定的动画剪辑创建一个动画状态。 若指定名称的动画状态已存在,已存在的动画状态将先被设为停止并被覆盖。

    Parameters

    • clip: AnimationClip

      The animation clip

    • Optional name: undefined | string

      The animation state name, if absent, the default clip's name will be used

    Returns AnimationState

    The animation state created

crossFade

  • crossFade(name: string, duration?: number): void
  • en

    Smoothly switch to play specified animation state.

    zn

    平滑地切换到指定动画状态。

    Parameters

    • name: string

      The name of the animation to switch to

    • Default value duration: number = 0.3

      The duration of the cross fade, default value is 0.3s

    Returns void

destroy

  • destroy(): any

emit

  • emit(type: EventType, arg0?: any, arg1?: any, arg2?: any, arg3?: any, arg4?: any): void

getAnimationState

getComponent

  • getComponent<T>(classConstructor: Constructor<T>): T | null
  • getComponent(className: string): Component | null
  • 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
    传入参数也可以是脚本的名称。

    example
    // get custom test calss.
    var test = node.getComponent("Test");

    Type parameters

    Parameters

    Returns T | null

  • 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
    传入参数也可以是脚本的名称。

    example
    // get custom test calss.
    var test = node.getComponent("Test");

    Parameters

    • className: string

    Returns Component | null

getComponentInChildren

  • getComponentInChildren<T>(classConstructor: Constructor<T>): T | null
  • getComponentInChildren(className: string): Component | null

getComponents

  • getComponents<T>(classConstructor: Constructor<T>): T[]
  • getComponents(className: string): Component[]

getComponentsInChildren

  • getComponentsInChildren<T>(classConstructor: Constructor<T>): T[]
  • getComponentsInChildren(className: string): Component[]

getState

hasEventListener

  • hasEventListener(type: string, callback?: Function, target?: undefined | object): boolean
  • 检查指定事件是否已注册回调。

    Parameters

    • type: string

      Event type.

    • Optional callback: Function

      Callback function when event triggered.

    • Optional target: undefined | object

      Callback callee.

    Returns boolean

Protected Optional lateUpdate

  • lateUpdate(dt: number): void
  • 如果该组件启用,则每帧调用 LateUpdate。
    该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。

    Parameters

    • dt: number

      the delta time in seconds it took to complete the last frame

    Returns void

off

  • off(type: EventType, callback?: Function, thisArg?: any): void
  • 取消注册动画事件回调。

    example
    // unregister event to all animation
    animation.off('play', this.onPlay, this);

    Parameters

    • type: EventType

      The event type to unregister

    • Optional callback: Function

      The callback to unregister

    • Optional thisArg: any

    Returns void

on

  • on<TFunction>(type: EventType, callback: TFunction, thisArg?: any, once?: undefined | false | true): TFunction
  • 注册动画事件回调。 回调的事件里将会附上发送事件的 AnimationState。 当播放一个动画时,会自动将事件注册到对应的 AnimationState 上,停止播放时会将事件从这个 AnimationState 上取消注册。

    example
    onPlay: function (type, state) {
        // callback
    }
    // register event to all animation
    animation.on('play', this.onPlay, this);

    Type parameters

    • TFunction: Function

    Parameters

    • type: EventType

      The event type to listen to

    • callback: TFunction

      The callback when event triggered

    • Optional thisArg: any
    • Optional once: undefined | false | true

    Returns TFunction

    The registered callback

onDestroy

  • onDestroy(): void

onDisable

  • onDisable(): void

onEnable

  • onEnable(): void

Optional onFocusInEditor

  • onFocusInEditor(): void

onLoad

  • onLoad(): void

Optional onLostFocusInEditor

  • onLostFocusInEditor(): void

Protected Optional onRestore

  • onRestore(): void
  • onRestore 是用户在检查器菜单点击 Reset 时,对此组件执行撤消操作后调用的。

    如果组件包含了“内部状态”(不在 CCClass 属性中定义的临时成员变量),那么你可能需要实现该方法。

    编辑器执行撤销/重做操作时,将调用组件的 get set 来录制和还原组件的状态。 然而,在极端的情况下,它可能无法良好运作。
    那么你就应该实现这个方法,手动根据组件的属性同步“内部状态”。 一旦你实现这个方法,当用户撤销或重做时,组件的所有 get set 都不会再被调用。 这意味着仅仅指定了默认值的属性将被编辑器记录和还原。

    同样的,编辑可能无法在极端情况下正确地重置您的组件。
    于是如果你需要支持组件重置菜单,你需要在该方法中手工同步组件属性到“内部状态”。
    一旦你实现这个方法,组件的所有 get set 都不会在重置操作时被调用。 这意味着仅仅指定了默认值的属性将被编辑器重置。
    此方法仅在编辑器下会被调用。

    Returns void

once

  • once<TFunction>(type: EventType, callback: TFunction, thisArg?: any): TFunction

pause

  • pause(): void

play

  • play(name?: undefined | string): void
  • 立即切换到指定动画状态。

    Parameters

    • Optional name: undefined | string

      The name of the animation to be played, if absent, the default clip will be played

    Returns void

removeAll

  • removeAll(typeOrTarget: string | object): void
  • 移除在特定事件类型中注册的所有回调或在某个目标中注册的所有回调。

    Parameters

    • typeOrTarget: string | object

      The event type or target with which the listeners will be removed

    Returns void

removeClip

  • removeClip(clip: AnimationClip, force?: undefined | false | true): void
  • 从动画列表中移除指定的动画剪辑,
    如果依赖于 clip 的 AnimationState 正在播放或者 clip 是 defaultClip 的话,默认是不会删除 clip 的。
    但是如果 force 参数为 true,则会强制停止该动画,然后移除该动画剪辑和相关的动画。这时候如果 clip 是 defaultClip,defaultClip 将会被重置为 null。

    deprecated

    please use removeState

    Parameters

    • clip: AnimationClip
    • Optional force: undefined | false | true

      If force is true, then will always remove the clip and any animation states based on it.

    Returns void

removeState

  • removeState(name: string): void

Optional resetInEditor

  • resetInEditor(): void

resume

  • resume(): void

schedule

  • schedule(callback: any, interval?: number, repeat?: number, delay?: number): void
  • 调度一个自定义的回调函数。
    如果回调函数已调度,那么将不会重复调度它,只会更新时间间隔参数。

    method

    schedule

    example
    var timeCallback = function (dt) {
      cc.log("time: " + dt);
    }
    this.schedule(timeCallback, 1);

    Parameters

    • callback: any

      回调函数。

    • Default value interval: number = 0

      时间间隔,0 表示每帧都重复。

    • Default value repeat: number = cc.macro.REPEAT_FOREVER

      将被重复执行(repeat+ 1)次,您可以使用 cc.macro.REPEAT_FOREVER 进行无限次循环。

    • Default value delay: number = 0

      第一次执行前等待的时间(延时执行)。

    Returns void

scheduleOnce

  • scheduleOnce(callback: any, delay?: number): void
  • 调度一个只运行一次的回调函数,可以指定 0 让回调函数在下一帧立即执行或者在一定的延时之后执行。

    method

    scheduleOnce

    see

    schedule

    example
    var timeCallback = function (dt) {
      cc.log("time: " + dt);
    }
    this.scheduleOnce(timeCallback, 2);

    Parameters

    • callback: any

      回调函数。

    • Default value delay: number = 0

      第一次执行前等待的时间(延时执行)。

    Returns void

start

  • start(): void

stop

  • stop(): void

targetOff

  • targetOff(typeOrTarget: string | object): void
  • 在当前 EventTarget 上删除指定目标(target 参数)注册的所有事件监听器。 这个函数无法删除当前 EventTarget 的所有事件监听器,也无法删除 target 参数所注册的所有事件监听器。 这个函数只能删除 target 参数在当前 EventTarget 上注册的所有事件监听器。

    Parameters

    • typeOrTarget: string | object

      The target to be searched for all related listeners

    Returns void

unschedule

  • unschedule(callback_fn: any): void

unscheduleAllCallbacks

  • unscheduleAllCallbacks(): void

Protected Optional update

  • update(dt: number): void
  • 如果该组件启用,则每帧调用 update。
    该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。

    Parameters

    • dt: number

      the delta time in seconds it took to complete the last frame

    Returns void

Static deferredDestroy

  • _deferredDestroy(): void

Generated using TypeDoc