UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

493 lines (472 loc) 17.2 kB
namespace dragonBones { /** * Egret 事件。 * @version DragonBones 4.5 * @language zh_CN */ export class EgretEvent extends egret.Event { /** * 事件对象。 * @see dragonBones.EventObject * @version DragonBones 4.5 * @language zh_CN */ public get eventObject(): EventObject { return this.data; } /** * @deprecated * 已废弃,请参考 @see * @see #eventObject * @see dragonBones.EventObject#animationState */ public get animationName(): string { const animationState = this.eventObject.animationState; return animationState !== null ? animationState.name : ""; } /** * @deprecated * 已废弃,请参考 @see * @see #eventObject * @see dragonBones.EventObject#armature */ public get armature(): Armature { return this.eventObject.armature; } /** * @deprecated * 已废弃,请参考 @see * @see #eventObject * @see dragonBones.EventObject#bone */ public get bone(): Bone | null { return this.eventObject.bone; } /** * @deprecated * 已废弃,请参考 @see * @see #eventObject * @see dragonBones.EventObject#slot */ public get slot(): Slot | null { return this.eventObject.slot; } /** * @deprecated * 已废弃,请参考 @see * @see #eventObject * @see dragonBones.EventObject#animationState */ public get animationState(): AnimationState | null { return this.eventObject.animationState; } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject#name */ public get frameLabel(): string { return this.eventObject.name; } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject#name */ public get sound(): string { return this.eventObject.name; } /** * @deprecated * 已废弃,请参考 @see * @see #animationName */ public get movementID(): string { return this.animationName; } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.START */ public static START: string = EventObject.START; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.LOOP_COMPLETE */ public static LOOP_COMPLETE: string = EventObject.LOOP_COMPLETE; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.COMPLETE */ public static COMPLETE: string = EventObject.COMPLETE; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FADE_IN */ public static FADE_IN: string = EventObject.FADE_IN; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FADE_IN_COMPLETE */ public static FADE_IN_COMPLETE: string = EventObject.FADE_IN_COMPLETE; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FADE_OUT */ public static FADE_OUT: string = EventObject.FADE_OUT; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FADE_OUT_COMPLETE */ public static FADE_OUT_COMPLETE: string = EventObject.FADE_OUT_COMPLETE; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FRAME_EVENT */ public static FRAME_EVENT: string = EventObject.FRAME_EVENT; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.SOUND_EVENT */ public static SOUND_EVENT: string = EventObject.SOUND_EVENT; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FRAME_EVENT */ public static ANIMATION_FRAME_EVENT: string = EventObject.FRAME_EVENT; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FRAME_EVENT */ public static BONE_FRAME_EVENT: string = EventObject.FRAME_EVENT; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.FRAME_EVENT */ public static MOVEMENT_FRAME_EVENT: string = EventObject.FRAME_EVENT; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EventObject.SOUND_EVENT */ public static SOUND: string = EventObject.SOUND_EVENT; } /** * @inheritDoc */ export class EgretArmatureDisplay extends egret.DisplayObjectContainer implements IArmatureProxy, IEventDispatcher { private _debugDraw: boolean = false; private _disposeProxy: boolean = false; private _armature: Armature = null as any; // private _debugDrawer: egret.Sprite | null = null; /** * @inheritDoc */ public dbInit(armature: Armature): void { this._armature = armature; } /** * @inheritDoc */ public dbClear(): void { this._disposeProxy = false; this._armature = null as any; this._debugDrawer = null; } /** * @inheritDoc */ public dbUpdate(): void { const drawed = DragonBones.debugDraw; if (drawed || this._debugDraw) { this._debugDraw = drawed; if (this._debugDraw) { if (this._debugDrawer === null) { this._debugDrawer = new egret.Sprite(); } this.addChild(this._debugDrawer); this._debugDrawer.graphics.clear(); for (const bone of this._armature.getBones()) { const boneLength = bone.boneData.length; const startX = bone.globalTransformMatrix.tx; const startY = bone.globalTransformMatrix.ty; const endX = startX + bone.globalTransformMatrix.a * boneLength; const endY = startY + bone.globalTransformMatrix.b * boneLength; this._debugDrawer.graphics.lineStyle(2.0, 0x00FFFF, 0.7); this._debugDrawer.graphics.moveTo(startX, startY); this._debugDrawer.graphics.lineTo(endX, endY); this._debugDrawer.graphics.lineStyle(0.0, 0, 0); this._debugDrawer.graphics.beginFill(0x00FFFF, 0.7); this._debugDrawer.graphics.drawCircle(startX, startY, 3.0); this._debugDrawer.graphics.endFill(); } for (const slot of this._armature.getSlots()) { const boundingBoxData = slot.boundingBoxData; if (boundingBoxData !== null) { let child = this._debugDrawer.getChildByName(slot.name) as egret.Shape; if (child === null) { child = new egret.Shape(); child.name = slot.name; this._debugDrawer.addChild(child); } child.graphics.clear(); child.graphics.beginFill(boundingBoxData.color ? boundingBoxData.color : 0xFF00FF, 0.3); switch (boundingBoxData.type) { case BoundingBoxType.Rectangle: child.graphics.drawRect(-boundingBoxData.width * 0.5, -boundingBoxData.height * 0.5, boundingBoxData.width, boundingBoxData.height); break; case BoundingBoxType.Ellipse: child.graphics.drawEllipse(-boundingBoxData.width * 0.5, -boundingBoxData.height * 0.5, boundingBoxData.width, boundingBoxData.height); break; case BoundingBoxType.Polygon: const vertices = (boundingBoxData as PolygonBoundingBoxData).vertices; for (let i = 0; i < vertices.length; i += 2) { if (i === 0) { child.graphics.moveTo(vertices[i], vertices[i + 1]); } else { child.graphics.lineTo(vertices[i], vertices[i + 1]); } } break; default: break; } child.graphics.endFill(); slot.updateTransformAndMatrix(); slot.updateGlobalTransform(); child.$setMatrix((slot.globalTransformMatrix as any) as egret.Matrix, true); } else { const child = this._debugDrawer.getChildByName(slot.name); if (child !== null) { this._debugDrawer.removeChild(child); } } } } else if (this._debugDrawer !== null && this._debugDrawer.parent === this) { this.removeChild(this._debugDrawer); } } } /** * @inheritDoc */ public dispose(disposeProxy: boolean = true): void { this._disposeProxy = disposeProxy; if (this._armature !== null) { const displays = new Array<egret.DisplayObject>(); for (const slot of this._armature.getSlots()) { for (const display of slot.displayList) { if (display instanceof egret.DisplayObject && displays.indexOf(display) < 0) { displays.push(display); } } } this._armature.dispose(); this._armature = null as any; for (const display of displays) { display.dispose(); } super.dispose(); } } /** * @inheritDoc */ public dispatchDBEvent(type: EventStringType, eventObject: EventObject): void { const event = egret.Event.create(EgretEvent, type); event.data = eventObject; super.dispatchEvent(event); egret.Event.release(event); } /** * @inheritDoc */ public hasDBEventListener(type: EventStringType): boolean { return this.hasEventListener(type); } /** * @inheritDoc */ public addDBEventListener(type: EventStringType, listener: (event: EgretEvent) => void, target: any): void { this.addEventListener(type, listener, target); } /** * @inheritDoc */ public removeDBEventListener(type: EventStringType, listener: (event: EgretEvent) => void, target: any): void { this.removeEventListener(type, listener, target); } /** * @inheritDoc */ public get armature(): Armature { return this._armature; } /** * @inheritDoc */ public get animation(): Animation { return this._armature.animation; } /** * @see #hasDBEventListener() * @deprecated */ public hasEvent(type: EventStringType): boolean { return this.hasDBEventListener(type); } /** * @see #addDBEventListener() * @deprecated */ public addEvent(type: EventStringType, listener: (event: EgretEvent) => void, target: any): void { this.addDBEventListener(type, listener, target); } /** * @see #removeDBEventListener() * @deprecated */ public removeEvent(type: EventStringType, listener: (event: EgretEvent) => void, target: any): void { this.removeDBEventListener(type, listener, target); } /** * @see dragonBones.Armature#clock * @see dragonBones.BaseFactory#clock * @deprecated */ public advanceTimeBySelf(on: boolean): void { if (on) { this._armature.clock = EgretFactory.factory.clock; } else { this._armature.clock = null; } } } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.Armature */ export type FastArmature = Armature; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.Bone */ export type FastBone = Bone; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.Slot */ export type FastSlot = Slot; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.Animation */ export type FastAnimation = Animation; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.AnimationState */ export type FastAnimationState = AnimationState; /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretEvent */ export class Event extends EgretEvent { } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretEvent */ export class ArmatureEvent extends EgretEvent { } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretEvent */ export class AnimationEvent extends EgretEvent { } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretEvent */ export class FrameEvent extends EgretEvent { } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretEvent */ export class SoundEvent extends EgretEvent { } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretTextureAtlasData */ export class EgretTextureAtlas extends EgretTextureAtlasData { /** * @private */ public static toString(): string { return "[class dragonBones.EgretTextureAtlas]"; } public constructor(texture: egret.Texture, rawData: any, scale: number = 1) { super(); console.warn("已废弃,请参考 @see"); this._onClear(); ObjectDataParser.getInstance().parseTextureAtlasData(rawData, this, scale); this.renderTexture = texture; } } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretTextureAtlasData */ export class EgretSheetAtlas extends EgretTextureAtlas { } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretFactory#soundEventManager */ export class SoundEventManager { /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.EgretFactory#soundEventManager */ public static getInstance(): EgretArmatureDisplay { console.warn("已废弃,请参考 @see"); return EgretFactory.factory.soundEventManager; } } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.Armature#cacheFrameRate * @see dragonBones.Armature#enableAnimationCache() */ export class AnimationCacheManager { } }