UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

237 lines (223 loc) 9.56 kB
namespace dragonBones { /** * Egret 工厂。 * @version DragonBones 3.0 * @language zh_CN */ export class EgretFactory extends BaseFactory { private static _time: number = 0; private static _dragonBonesInstance: DragonBones = null as any; private static _factory: EgretFactory | null = null; private static _clockHandler(time: number): boolean { time *= 0.001; const passedTime = time - EgretFactory._time; EgretFactory._dragonBonesInstance.advanceTime(passedTime); EgretFactory._time = time; return false; } /** * 一个可以直接使用的全局工厂实例。 * @version DragonBones 4.7 * @language zh_CN */ public static get factory(): EgretFactory { if (EgretFactory._factory === null) { EgretFactory._factory = new EgretFactory(); } return EgretFactory._factory; } /** * @inheritDoc */ public constructor() { super(); if (EgretFactory._dragonBonesInstance === null) { const eventManager = new EgretArmatureDisplay(); EgretFactory._dragonBonesInstance = new DragonBones(eventManager); EgretFactory._dragonBonesInstance.clock.time = egret.getTimer() * 0.001; egret.startTick(EgretFactory._clockHandler, EgretFactory); } this._dragonBones = EgretFactory._dragonBonesInstance; } /** * @private */ protected _isSupportMesh(): boolean { if (egret.Capabilities.renderMode === "webgl" || egret.Capabilities.runtimeType === egret.RuntimeType.NATIVE) { return true; } console.warn("Canvas can not support mesh, please change renderMode to webgl."); return false; } /** * @private */ protected _buildTextureAtlasData(textureAtlasData: EgretTextureAtlasData | null, textureAtlas: egret.Texture | HTMLImageElement | null): EgretTextureAtlasData { if (textureAtlasData !== null) { if (textureAtlas instanceof egret.Texture) { textureAtlasData.renderTexture = textureAtlas; } else { const egretTexture = new egret.Texture(); egretTexture.bitmapData = new egret.BitmapData(textureAtlas); textureAtlasData.disposeEnabled = true; textureAtlasData.renderTexture = egretTexture; } } else { textureAtlasData = BaseObject.borrowObject(EgretTextureAtlasData); } return textureAtlasData; } /** * @private */ protected _buildArmature(dataPackage: BuildArmaturePackage): Armature { const armature = BaseObject.borrowObject(Armature); const armatureDisplay = new EgretArmatureDisplay(); armature.init( dataPackage.armature, armatureDisplay, armatureDisplay, this._dragonBones ); return armature; } /** * @private */ protected _buildSlot(dataPackage: BuildArmaturePackage, slotData: SlotData, displays: Array<DisplayData | null> | null, armature: Armature): Slot { dataPackage; armature; const slot = BaseObject.borrowObject(EgretSlot); slot.init( slotData, displays, new egret.Bitmap(), new egret.Mesh() ); return slot; } /** * 创建一个指定名称的骨架。 * @param armatureName 骨架名称。 * @param dragonBonesName 龙骨数据名称,如果未设置,将检索所有的龙骨数据,如果多个数据中包含同名的骨架数据,可能无法创建出准确的骨架。 * @param skinName 皮肤名称,如果未设置,则使用默认皮肤。 * @param textureAtlasName 贴图集数据名称,如果未设置,则使用龙骨数据。 * @returns 骨架的显示容器。 * @see dragonBones.EgretArmatureDisplay * @version DragonBones 4.5 * @language zh_CN */ public buildArmatureDisplay(armatureName: string, dragonBonesName: string | null = null, skinName: string | null = null, textureAtlasName: string | null = null): EgretArmatureDisplay | null { const armature = this.buildArmature(armatureName, dragonBonesName, skinName, textureAtlasName); if (armature !== null) { this._dragonBones.clock.add(armature); return armature.display as EgretArmatureDisplay; } return null; } /** * 获取带有指定贴图的显示对象。 * @param textureName 指定的贴图名称。 * @param textureAtlasName 指定的贴图集数据名称,如果未设置,将检索所有的贴图集数据。 * @version DragonBones 3.0 * @language zh_CN */ public getTextureDisplay(textureName: string, textureAtlasName: string | null = null): egret.Bitmap | null { const textureData = this._getTextureData(textureAtlasName !== null ? textureAtlasName : "", textureName) as EgretTextureData; if (textureData !== null && textureData.renderTexture !== null) { const texture = textureData.renderTexture; const bitmap = new egret.Bitmap(texture); bitmap.width = texture.textureWidth * textureData.parent.scale; bitmap.height = texture.textureHeight * textureData.parent.scale; return bitmap; } return null; } /** * 获取全局声音事件管理器。 * @version DragonBones 4.5 * @language zh_CN */ public get soundEventManager(): EgretArmatureDisplay { return this._dragonBones.eventManager as EgretArmatureDisplay; } /** * 已废弃,请参考 @see * @see dragonBones.BaseFactory#clock * @deprecated */ public static get clock(): WorldClock { return EgretFactory.factory.clock; } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#addDragonBonesData() */ public addSkeletonData(dragonBonesData: DragonBonesData, dragonBonesName: string | null = null): void { console.warn("已废弃,请参考 @see"); this.addDragonBonesData(dragonBonesData, dragonBonesName); } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#getDragonBonesData() */ public getSkeletonData(dragonBonesName: string) { console.warn("已废弃,请参考 @see"); return this.getDragonBonesData(dragonBonesName); } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#removeDragonBonesData() */ public removeSkeletonData(dragonBonesName: string): void { console.warn("已废弃,请参考 @see"); this.removeDragonBonesData(dragonBonesName); } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#addTextureAtlasData() */ public addTextureAtlas(textureAtlasData: TextureAtlasData, dragonBonesName: string | null = null): void { console.warn("已废弃,请参考 @see"); this.addTextureAtlasData(textureAtlasData, dragonBonesName); } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#getTextureAtlasData() */ public getTextureAtlas(dragonBonesName: string) { console.warn("已废弃,请参考 @see"); return this.getTextureAtlasData(dragonBonesName); } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#removeTextureAtlasData() */ public removeTextureAtlas(dragonBonesName: string): void { console.warn("已废弃,请参考 @see"); this.removeTextureAtlasData(dragonBonesName); } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#buildArmature() */ public buildFastArmature(armatureName: string, dragonBonesName: string | null = null, skinName: string | null = null): FastArmature | null { console.warn("已废弃,请参考 @see"); return this.buildArmature(armatureName, dragonBonesName, skinName); } /** * @deprecated * 已废弃,请参考 @see * @see dragonBones.BaseFactory#clear() */ public dispose(): void { console.warn("已废弃,请参考 @see"); this.clear(); } } }