xl-pano
Version:
一个基于 Typescript 的,同时支持立方体和球体场景的轻量开源库。
91 lines (90 loc) • 2.74 kB
TypeScript
import { TextureSource } from "../../types/index";
import HotSpot from "../HotSpot";
import Pano from "../Pano";
export declare type SceneListenerType = 'angleChange';
export declare type SceneAngleChangeCallback = (angle: SceneAngle) => void;
export declare type SceneListenerCallback = SceneAngleChangeCallback;
export declare type VoidFunction = () => void;
/**
* 场景角度
* @param pitch {number} 俯仰角
* @param yaw {number} 偏航角
* */
export declare type SceneAngle = {
pitch?: number;
yaw?: number;
};
/**
* 场景接口,CubeScene 和 SphereScene 都要实现的接口
* */
export default interface Scene {
/**
* @property {TextureSource[] | TextureSource} textures 纹理资源:在各个子类中重写
* */
textures: TextureSource[] | TextureSource;
/**
* @property {HotSpot[]} hotSpots 热点
* */
hotSpots: HotSpot[];
/**
* 添加回调函数
* @param type {SceneListenerType} 事件类型,预定义好的
* @param callback {SceneListenerCallback} 回调函数
* */
addListener: (type: SceneListenerType, callback: SceneListenerCallback) => void;
/**
* 移除监听
* @param type {SceneListenerType} 事件类型,预定义好的
* @param callback {SceneListenerCallback} 回调函数
* */
removeListener: (type: SceneListenerType, callback: SceneListenerCallback) => void;
/**
* 添加热点
* @param {HotSpot | HotSpot[]} hotSpots 待添加的热点
* */
addHotSpots: (hotSpots: HotSpot | HotSpot[]) => void;
/**
* 渲染到 pano
* @param {Pano} pano 父容器
* */
render: (pano: Pano) => void;
/**
* 点击热点回调,执行切换场景前的动画
* @param {HotSpot} hotSpot 目标热点
* */
onHotSpotClick: (hotSpot: HotSpot) => void;
/**
* 销毁
* */
destroy: VoidFunction;
/**
* 获取当前角度
* @return {SceneAngle} 俯仰角/偏航角
* */
getAngle: () => SceneAngle;
/**
* 设置到某个角度
* @param angle {SceneAngle} 目标角度值
* @param options {AnimationOptions} 可选动画参数
* */
setAngle: (angle: SceneAngle, options?: {
animation?: boolean;
duration?: number;
callback?: VoidFunction;
}) => void;
/**
* 获取视角范围
* @return {number} 视角范围
* */
getFovy: () => number;
/**
* 设置到视角
* @param fovy {number} 目标视角
* @param options {AnimationOptions} 可选动画参数
* */
setFovy: (fovy: number, options?: {
animation?: boolean;
duration?: number;
callback?: VoidFunction;
}) => void;
}