// 这里包含所有插件导出的函数及变量声明,声明的函数会在类型标注中标注到core上 interface PluginDeclaration { /** * 添加函数 例:添加弹出文字,像这个就可以使用core.addPop或core.plugin.addPop调用 * @param px 弹出的横坐标 * @param py 弹出的纵坐标 * @param value 弹出的文字 */ addPop(px: number, py: number, value: string): void; /** * 添加变量 例:所有的正在弹出的文字,像这个就可以使用core.plugin.pop获取 */ pop: any[]; } type Forward = { [K in keyof T as T[K] extends Function ? K extends `_${string}` ? never : K : never]: T[K]; }; type ForwardKeys = keyof Forward; type SpriteMouseEvent = (px: number, py: number) => void; type SpritKeyEvent = ( key: string, keyCode: number, altKey: boolean, ctrlKey: boolean, shiftKey: boolean ) => void; type SpriteWheelEvent = ( deltaY: number, deltaX: number, deltaZ: number ) => void; type SpriteTouchEvent = (...locs: [number, number][]) => void; interface SpriteEvent { click: SpriteMouseEvent; mousedown: SpriteMouseEvent; mouseup: SpriteMouseEvent; mouseenter: SpriteMouseEvent; mouseleave: SpriteMouseEvent; mousemove: SpriteMouseEvent; keydown: SpritKeyEvent; keyup: SpritKeyEvent; keypress: SpritKeyEvent; wheel: SpriteWheelEvent; touchstart: SpriteTouchEvent; touchend: SpriteTouchEvent; touchmove: SpriteTouchEvent; touchcancel: SpriteTouchEvent; } declare class Sprite { /** * 递增的sprite标识符 */ static count: number; /** * sprite的左上角横坐标 */ x: number; /** * sprite的左上角纵坐标 */ y: number; /** * sprite的宽度 */ width: number; /** * sprite的高度 */ height: number; /** * sprite的纵深 */ zIndex: number; /** * sprite的相对模式,相对游戏还是相对窗口 */ reference: 'game' | 'window'; /** * sprite的canvas元素 */ canvas: HTMLCanvasElement; /** * sprite的context */ context: CanvasRenderingContext2D; /** * sprite的名称 */ name: string; /** * spirte的唯一标识符 */ readonly count: number; /** * 创建一个sprite画布 * @param reference 参考系,游戏画面或者窗口 * @param name 可选,sprite的名称,方便通过core.dymCanvas获取 */ constructor( x: number, y: number, w: number, h: number, z: number, reference?: 'game' | 'window', name?: string ); /** * 初始化 */ init(): void; /** * @deprecated * 设置css特效,使用css()代替 */ setCss(css: string): Sprite; /** * 设置css特效 */ css(css: string): Sprite; /** * 移动sprite * @param isDelta 是否是相对位置,如果是,那么sprite会相对于原先的位置进行移动 */ move(x: number, y: number, isDelta?: boolean): Sprite; /** * 重新设置sprite的大小 * @param {boolean} styleOnly 是否只修改css效果,如果是,那么将会不高清,如果不是,那么会清空画布 */ resize(w: number, h: number, styleOnly?: boolean): Sprite; /** * 旋转画布 */ rotate(angle: number, cx?: number, cy?: number): Sprite; /** * 擦除画布 */ clear(x?: number, y?: number, w?: number, h?: number): Sprite; /** * 删除 */ destroy(): void; /** * 监听事件,与registerAction类似 */ on(type: K, handler: SpriteEvent[K]): void; /** * 添加事件监听器 */ addEventListener: HTMLCanvasElement['addEventListener']; /** * 删除事件监听器 */ removeEventListenr: HTMLCanvasElement['removeEventListener']; }