Options
All
  • Public
  • Public/Protected
  • All
Menu

Class ScrollView

滚动视图组件。

Hierarchy

Index

Constructors

Properties

Accessors

Methods

Constructors

constructor

Properties

Private __prefab

__prefab: CompPrefabInfo | null = null

Protected _autoScrollAccumulatedTime

_autoScrollAccumulatedTime: number = 0

Protected _autoScrollAttenuate

_autoScrollAttenuate: boolean = false

Protected _autoScrollBraking

_autoScrollBraking: boolean = false

Protected _autoScrollBrakingStartPosition

_autoScrollBrakingStartPosition: Vec3 = new Vec3()

Protected _autoScrollCurrentlyOutOfBoundary

_autoScrollCurrentlyOutOfBoundary: boolean = false

Protected _autoScrollStartPosition

_autoScrollStartPosition: Vec3 = new Vec3()

Protected _autoScrollTargetDelta

_autoScrollTargetDelta: Vec3 = new Vec3()

Protected _autoScrollTotalTime

_autoScrollTotalTime: number = 0

Protected _autoScrolling

_autoScrolling: boolean = false

Protected _bottomBoundary

_bottomBoundary: number = 0

Protected _content

_content: Node | null = null

Protected _contentPos

_contentPos: Vec3 = new Vec3()

Protected _deltaPos

_deltaPos: Vec3 = new Vec3()

Private _enabled

_enabled: boolean = true

Protected _horizontalScrollBar

_horizontalScrollBar: ScrollBar | null = null

Private _id

_id: string = idGenerator.getNewId()

For internal usage.

Protected _isBouncing

_isBouncing: boolean = false

Protected _isScrollEndedWithThresholdEventFired

_isScrollEndedWithThresholdEventFired: boolean = false

Protected _leftBoundary

_leftBoundary: number = 0

Protected _mouseWheelEventElapsedTime

_mouseWheelEventElapsedTime: number = 0

Protected _name

_name: string

_objFlags

_objFlags: number

Protected _outOfBoundaryAmount

_outOfBoundaryAmount: Vec3 = new Vec3()

Protected _outOfBoundaryAmountDirty

_outOfBoundaryAmountDirty: boolean = true

Protected _rightBoundary

_rightBoundary: number = 0

Private sceneGetter

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

Protected _scrollEventEmitMask

_scrollEventEmitMask: number = 0

Protected _scrolling

_scrolling: boolean = false

Protected _stopMouseWheel

_stopMouseWheel: boolean = false

Protected _topBoundary

_topBoundary: number = 0

Protected _touchMoveDisplacements

_touchMoveDisplacements: Vec3[] = []

Protected _touchMovePreviousTimestamp

_touchMovePreviousTimestamp: number = 0

Protected _touchMoveTimeDeltas

_touchMoveTimeDeltas: number[] = []

Protected _touchMoved

_touchMoved: boolean = false

Protected _verticalScrollBar

_verticalScrollBar: ScrollBar | null = null

bounceDuration

bounceDuration: number = 1

回弹持续的时间,0 表示将立即反弹。

brake

brake: number = 0.5

开启惯性后,在用户停止触摸后滚动多快停止,0表示永不停止,1表示立刻停止。

cancelInnerEvents

cancelInnerEvents: boolean = true

如果这个属性被设置为 true,那么滚动行为会取消子节点上注册的触摸事件,默认被设置为 true。
注意,子节点上的 touchstart 事件仍然会触发,触点移动距离非常短的情况下 touchmove 和 touchend 也不会受影响。

elastic

elastic: boolean = true

是否允许滚动内容超过边界,并在停止触摸后回弹。

horizontal

horizontal: boolean = true

是否开启水平滚动。

inertia

inertia: boolean = true

是否开启滚动惯性。

node

node: Node = NullNode

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

example
import { log } from 'cc';
log(comp.node);

scrollEvents

scrollEvents: ComponentEventHandler[] = []

滚动视图的事件回调函数。

vertical

vertical: boolean = true

是否开启垂直滚动。

Static EventType

EventType: EventType = EventType

Static system

system: null = null

Accessors

scriptAsset

  • get scriptAsset(): null

isOnLoadCalled

  • get isOnLoadCalled(): number

content

  • get content(): null | Node
  • set content(value: null | Node): void

enabled

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

enabledInHierarchy

  • get enabledInHierarchy(): boolean

horizontalScrollBar

  • get horizontalScrollBar(): null | ScrollBar
  • set horizontalScrollBar(value: ScrollBar | null): void

isValid

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

    default

    true

    readonly
    example
    import { Node, log } from 'cc';
    const node = new Node();
    log(node.isValid);    // true
    node.destroy();
    log(node.isValid);    // true, still valid in this frame
    // after a frame...
    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

verticalScrollBar

  • get verticalScrollBar(): null | ScrollBar
  • set verticalScrollBar(value: ScrollBar | null): void

view

Methods

Optional Private preload

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

    Returns void

Protected adjustContentOutOfBoundary

  • _adjustContentOutOfBoundary(): void

Protected calculateAttenuatedFactor

  • calculateAttenuatedFactor(distance: number): number

Protected calculateAutoScrollTimeByInitialSpeed

  • calculateAutoScrollTimeByInitialSpeed(initialSpeed: number): number

Protected calculateBoundary

  • _calculateBoundary(): void

Protected calculateMovePercentDelta

  • calculateMovePercentDelta(options: any): Vec3

Protected calculateTouchMoveVelocity

  • _calculateTouchMoveVelocity(): Vec3

Protected checkMouseWheel

  • checkMouseWheel(dt: number): void

Protected clampDelta

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 dispatchEvent

  • dispatchEvent(event: string): void

Protected flattenVectorByDirection

  • flattenVectorByDirection(vector: Vec3): Vec3

Protected gatherTouchMove

  • gatherTouchMove(delta: Vec3): void

Protected getContentBottomBoundary

  • _getContentBottomBoundary(): number

Protected getContentLeftBoundary

  • _getContentLeftBoundary(): number

Protected getContentRightBoundary

  • _getContentRightBoundary(): number

Protected getContentTopBoundary

  • _getContentTopBoundary(): number

Protected getHowMuchOutOfBoundary

  • getHowMuchOutOfBoundary(addition?: Vec3): Vec3

Protected getLocalAxisAlignDelta

Optional Private getLocalBounds

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

    Parameters

    • out_rect: Rect

      The rect to store the result bounding rect

    Returns void

Private getRenderScene

  • _getRenderScene(): RenderScene

Protected handleMoveLogic

  • handleMoveLogic(touch: Touch): void

Protected handlePressLogic

  • _handlePressLogic(): void

Protected handleReleaseLogic

  • handleReleaseLogic(touch: Touch): void

Protected hasNestedViewGroup

  • hasNestedViewGroup(event: Event, captureListeners?: Node[]): undefined | false | true

Protected hideScrollBar

  • _hideScrollBar(): void

instantiate

  • instantiate(cloned: any): any

Protected isNecessaryAutoScrollBrake

  • _isNecessaryAutoScrollBrake(): boolean

Protected isOutOfBoundary

  • _isOutOfBoundary(): boolean

Protected moveContent

  • moveContent(deltaMove: Vec3, canStartBounceBack?: undefined | false | true): void

Protected moveContentToTopLeft

  • moveContentToTopLeft(scrollViewSize: Size): void

Protected onMouseWheel

onPreDestroy

  • _onPreDestroy(): void

Protected onScrollBarTouchBegan

  • _onScrollBarTouchBegan(): void

Protected onScrollBarTouchEnded

  • _onScrollBarTouchEnded(): void

Protected onTouchBegan

Protected onTouchCancelled

  • onTouchCancelled(event: EventTouch, captureListeners?: Node[]): void

Protected onTouchEnded

Protected onTouchMoved

Protected processAutoScrolling

  • processAutoScrolling(dt: any): void

Protected processDeltaMove

  • processDeltaMove(deltaMove: Vec3): void

Protected processInertiaScroll

  • _processInertiaScroll(): void

Protected registerEvent

  • _registerEvent(): void

Protected scaleChanged

Protected scrollChildren

  • scrollChildren(deltaMove: Vec3): void

Protected startAttenuatingAutoScroll

  • startAttenuatingAutoScroll(deltaMove: Vec3, initialVelocity: Vec3): void

Protected startAutoScroll

  • startAutoScroll(deltaMove: Vec3, timeInSecond: number, attenuated?: boolean): void

Protected startBounceBackIfNeeded

  • _startBounceBackIfNeeded(): boolean

Protected startInertiaScroll

  • startInertiaScroll(touchMoveVelocity: Vec3): void

Protected stopPropagationIfTargetIsMe

  • stopPropagationIfTargetIsMe(event: Event): void

Protected unregisterEvent

  • _unregisterEvent(): void

Protected updateScrollBar

  • updateScrollBar(outOfBoundary: Vec3): void

Protected updateScrollBarState

  • _updateScrollBarState(): void

addComponent

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

destroy

  • destroy(): boolean

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

    • classConstructor: Constructor<T>

      The class of component to be retrieved or to be created

    Returns T | null

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

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

    Parameters

    • className: string

      A string for the class name of the component

    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[]

getContentPosition

  • getContentPosition(): Vec3

getMaxScrollOffset

  • getMaxScrollOffset(): Vec3

getScrollEndedEventTiming

  • getScrollEndedEventTiming(): number

getScrollOffset

  • getScrollOffset(): Vec3

isAutoScrolling

  • isAutoScrolling(): boolean
  • 当前滚动视图是否在惯性滚动。

    Returns boolean

    • 滚动视图是否在惯性滚动。

isScrolling

  • isScrolling(): boolean
  • 用户是否在拖拽当前滚动视图。

    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

Protected Optional onDestroy

  • onDestroy(): void

onDisable

  • onDisable(): void

onEnable

  • onEnable(): void

Optional onFocusInEditor

  • onFocusInEditor(): void

Protected Optional onLoad

  • onLoad(): void
  • 当附加到一个激活的节点上或者其节点第一次激活时候调用。onLoad 总是会在任何 start 方法调用前执行,这能用于安排脚本的初始化顺序。
    该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。

    Returns void

Optional onLostFocusInEditor

  • onLostFocusInEditor(): void

Protected Optional onRestore

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

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

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

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

    Returns void

Optional resetInEditor

  • resetInEditor(): void

schedule

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

    example
    import { log } from 'cc';
    this.schedule((dt) => void log(`time: ${dt}`), 1);

    Parameters

    • callback: any

      The callback function of the task

    • Default value interval: number = 0

      The time interval between each invocation

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

      The repeat count of this task, the task will be invoked (repeat + 1) times, use macro.REPEAT_FOREVER to repeat a task forever

    • Default value delay: number = 0

      The delay time for the first invocation, Unit: s

    Returns void

scheduleOnce

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

    method

    scheduleOnce

    see

    schedule

    example
    import { log } from 'cc';
    this.scheduleOnce((dt) => void log(`time: ${dt}`), 2);

    Parameters

    • callback: any

      The callback function of the task

    • Default value delay: number = 0

      The delay time for the first invocation, Unit: s

    Returns void

scrollTo

  • scrollTo(anchor: Vec2, timeInSecond?: undefined | number, attenuated?: undefined | false | true): void
  • 视图内容在规定时间内进行垂直方向和水平方向的滚动,并且滚动到指定百分比位置上。

    example
    // Vertical scroll to the bottom of the view.
    scrollView.scrollTo(new Vec2(0, 1), 0.1);
    // Horizontal scroll to view right.
    scrollView.scrollTo(new Vec2(1, 0), 0.1);

    Parameters

    • anchor: Vec2

      在 new Vec2(0,0) and new Vec2(1,1) 上取差值的一个点。

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到指定水平或垂直百分比位置。

    • Optional attenuated: undefined | false | true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToBottom

  • scrollToBottom(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图底部。

    example
    // Scroll to the bottom of the view.
    scrollView.scrollToBottom(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到底部边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToBottomLeft

  • scrollToBottomLeft(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图左下角。

    example
    // Scroll to the lower left corner of the view.
    scrollView.scrollToBottomLeft(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到左下边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToBottomRight

  • scrollToBottomRight(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图右下角。

    example
    // Scroll to the lower right corner of the view.
    scrollView.scrollToBottomRight(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到右边下边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToLeft

  • scrollToLeft(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图左边。

    example
    // Scroll to the left of the view.
    scrollView.scrollToLeft(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到左边边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToOffset

  • scrollToOffset(offset: Vec3, timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容在规定时间内将滚动到 ScrollView 相对左上角原点的偏移位置, 如果 timeInSecond 参数不传,则立即滚动到指定偏移位置。

    example
    // Scroll to middle position in 0.1 second in x-axis
    let maxScrollOffset = this.getMaxScrollOffset();
    scrollView.scrollToOffset(new Vec3(maxScrollOffset.x / 2, 0, 0), 0.1);

    Parameters

    • offset: Vec3

      指定移动偏移量。

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到指定偏移量处。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToPercentHorizontal

  • scrollToPercentHorizontal(percent: number, timeInSecond: number, attenuated: boolean): void
  • 视图内容在规定时间内将滚动到 ScrollView 水平方向的百分比位置上。

    example
    // Scroll to middle position.
    scrollView.scrollToBottomRight(0.5, 0.1);

    Parameters

    • percent: number

      0 - 之间的百分比。

    • timeInSecond: number

      滚动时间(s)。 如果超时,内容将立即跳到指定水平百分比位置。

    • attenuated: boolean

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToPercentVertical

  • scrollToPercentVertical(percent: number, timeInSecond?: undefined | number, attenuated?: undefined | false | true): void
  • 视图内容在规定时间内滚动到 ScrollView 垂直方向的百分比位置上。

    example
    scrollView.scrollToPercentVertical(0.5, 0.1);

    Parameters

    • percent: number

      0 - 1 之间的百分比。

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到指定垂直百分比位置。

    • Optional attenuated: undefined | false | true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToRight

  • scrollToRight(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图右边。

    example
    // Scroll to the right of the view.
    scrollView.scrollToRight(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到右边边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToTop

  • scrollToTop(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图顶部。

    example
    // Scroll to the top of the view.
    scrollView.scrollToTop(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到顶部边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToTopLeft

  • scrollToTopLeft(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图左上角。

    example
    // Scroll to the upper left corner of the view.
    scrollView.scrollToTopLeft(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到左上边边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

scrollToTopRight

  • scrollToTopRight(timeInSecond?: undefined | number, attenuated?: boolean): void
  • 视图内容将在规定时间内滚动到视图右上角。

    example
    // Scroll to the top right corner of the view.
    scrollView.scrollToTopRight(0.1);

    Parameters

    • Optional timeInSecond: undefined | number

      滚动时间(s)。 如果超时,内容将立即跳到右上边界。

    • Default value attenuated: boolean = true

      滚动加速是否衰减,默认为 true。

    Returns void

setContentPosition

  • setContentPosition(position: Vec3): void

start

  • start(): void

stopAutoScroll

  • stopAutoScroll(): void

unschedule

  • unschedule(callback_fn: any): void

unscheduleAllCallbacks

  • unscheduleAllCallbacks(): void

update

  • update(dt: number): void

Static deferredDestroy

  • _deferredDestroy(): void

Generated using TypeDoc