import { Container } from "pixi.js"; import { Transform } from "./Transform"; import { Vector2 } from "@math.gl/core"; import EventEmitter from "eventemitter3"; import { Component } from "./component/Component"; import type { GameObjectEventMap } from "./GameObjectEvent"; import type { Group } from "./group"; import type { Application } from "./Application"; export type Constructor = new (...args: any[]) => T; export { GameObjectEvent } from "./GameObjectEvent"; export type { GameObjectEventMap } from "./GameObjectEvent"; declare class GameObjectEmitter extends EventEmitter { private gameObject; constructor(gameObject: GameObject); private syncUpdateRegistration; on>(event: T, fn: EventEmitter.EventListener, context?: unknown): this; addListener>(event: T, fn: EventEmitter.EventListener, context?: unknown): this; once>(event: T, fn: EventEmitter.EventListener, context?: unknown): this; off>(event: T, fn?: EventEmitter.EventListener, context?: unknown, once?: boolean): this; removeListener>(event: T, fn?: EventEmitter.EventListener, context?: unknown, once?: boolean): this; removeAllListeners(event?: EventEmitter.EventNames): this; emit>(event: T, ...args: EventEmitter.EventArgs): boolean; } export declare abstract class BaseGameObject { abstract display: T; abstract get width(): number; abstract set width(val: number); abstract get height(): number; abstract set height(val: number); abstract get anchor(): Vector2; abstract set anchor(val: Vector2); protected refreshPivot(): void; } export declare abstract class GameObject extends BaseGameObject { static Event: { readonly ADDED: "added"; readonly CHILD_ADDED: "childAdded"; readonly REMOVED: "removed"; readonly CHILD_REMOVED: "childRemoved"; readonly RESIZE: "resize"; readonly REPOSITION: "reposition"; readonly TRANSFORM_CHANGE: "transformChange"; readonly TICKER_BEFORE: "tickerBefore"; readonly TICKER_AFTER: "tickerAfter"; }; emitter: GameObjectEmitter; display: T; transform: Transform; app?: Application; parent?: Group; components: Component[]; private componentTickerHandlers; private _destroying; get visible(): boolean; set visible(val: boolean); get x(): number; set x(val: number); get y(): number; set y(val: number); get scaleX(): number; set scaleX(val: number); get scaleY(): number; set scaleY(val: number); get width(): number; set width(val: number); get height(): number; set height(val: number); protected _anchor: Vector2; get anchor(): Vector2; set anchor(value: Vector2); get anchorX(): number; set anchorX(value: number); get anchorY(): number; set anchorY(value: number); get rotation(): number; set rotation(val: number); get skewX(): number; set skewX(val: number); get skewY(): number; set skewY(val: number); /** * 透明度 */ get alpha(): number; set alpha(val: number); start?(): void; hasUpdateWork(): boolean; syncUpdateRegistration(): void; setApplication(app?: Application): void; addComponent(component: Constructor, props?: Partial): T; removeComponent(component: T): T | undefined; getComponent(component: Constructor): T | undefined; getComponents(component: Constructor): T[] | undefined; private setDisplay; update?(dt: number): void; render?(): void; onDestroy?(): void; static instantiate(gameObject: Constructor, parent?: Group, props?: Partial): T; static destroy(go: GameObject): Promise; }