UNPKG

@cesium-extends/subscriber

Version:

该包提供了一种方便的方式,用于在 Cesium 场景中订阅事件。它允许您为指定的实体添加事件监听器,并在发生事件时触发回调函数。

72 lines (69 loc) 2.58 kB
import { Cartesian2, Viewer, Entity } from 'cesium'; interface EventArgs { position?: Cartesian2; endPosition?: Cartesian2; startPosition?: Cartesian2; [name: string]: any; } type ListenCallback<T> = (movement: EventArgs, substance: T) => void; type ExternalListenCallback = (movement: EventArgs, result: any) => void; type EventType = 'LEFT_DOWN' | 'LEFT_UP' | 'LEFT_CLICK' | 'LEFT_DOUBLE_CLICK' | 'RIGHT_DOWN' | 'RIGHT_UP' | 'RIGHT_CLICK' | 'MIDDLE_DOWN' | 'MIDDLE_UP' | 'MIDDLE_CLICK' | 'MOUSE_MOVE' | 'WHEEL' | 'PINCH_START' | 'PINCH_MOVE' | 'PINCH_END'; declare class Subscriber { private _viewer; private _handler; private _eventCollection; private _externalEventCollection; private readonly _eventTypeList; private _moveDebounce; private _lastTime; private _enablePickResult; private _lastResult; private _enable; private _isDestroy; /** * 是否被销毁 */ get isDestroy(): boolean; /** 是否执行监听回调 */ get enable(): boolean; set enable(val: boolean); constructor(viewer: Viewer, options?: { element?: HTMLCanvasElement; pickResult?: { enable: boolean; moveDebounce?: number; }; }); private _initListener; private _shouldUpdate; private _eventRegister; /** * @description 为Entity添加监听事件 * * @event * * @param {Function} callback 需要相应的事件 * * @param {EventType} eventType 事件类型 */ add(substances: Entity | Entity[], callback: ListenCallback<Entity>, eventType: EventType): void; /** * @description 添加特定事件,与add不同在于该事件不会过滤Entity * @param callback 事件处理函数 * @param eventType 事件类型 * @return {string} Event Id 事件移除时需要提供事件ID */ addExternal(callback: ExternalListenCallback, eventType: EventType): string; /** *@description 移除指定Substance的相应事件 * @param substances 需要移除事件的Substance * @param eventType 需要移除的时间类型 */ remove<T extends Entity>(substances: T | T[], eventType: EventType): void; removeExternal(ids: string | string[], eventType?: EventType): void; private _searchExternal; removeNative(viewer: Viewer, eventType: EventType): void; private convertCesiumEventType; destroy(): void; } export { type EventArgs, type EventType, type ExternalListenCallback, type ListenCallback, Subscriber, Subscriber as default };