@cesium-extends/subscriber
Version:
该包提供了一种方便的方式,用于在 Cesium 场景中订阅事件。它允许您为指定的实体添加事件监听器,并在发生事件时触发回调函数。
72 lines (69 loc) • 2.58 kB
TypeScript
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 };