olympus-r-egret
Version:
Olympus的Egret表现层库
371 lines (370 loc) • 12.7 kB
TypeScript
/// <amd-module name="EgretBridge" />
import IBridge from "olympus-r/engine/bridge/IBridge";
import { IMaskEntity } from "olympus-r/engine/mask/MaskManager";
import IMediator from "olympus-r/engine/mediator/IMediator";
import IPanelPolicy from "olympus-r/engine/panel/IPanelPolicy";
import { IPromptPanelConstructor } from "olympus-r/engine/panel/IPromptPanel";
import IScenePolicy from "olympus-r/engine/scene/IScenePolicy";
import { MaskData } from "./egret/mask/MaskEntity";
import RenderMode from "./egret/RenderMode";
/**
* @author Raykid
* @email initial_r@qq.com
* @create date 2017-09-18
* @modify date 2017-09-18
*
* Egret的表现层桥实现,当前Egret版本:5.0.7
*/
export default class EgretBridge implements IBridge<egret.DisplayObject> {
/** 提供静态类型常量 */
static TYPE: string;
private _initParams;
/**
* 获取表现层类型名称
*
* @readonly
* @type {string}
* @memberof EgretBridge
*/
readonly type: string;
/**
* 获取表现层HTML包装器,可以对其样式进行自定义调整
*
* @readonly
* @type {HTMLElement}
* @memberof EgretBridge
*/
readonly htmlWrapper: HTMLElement;
private _root;
/**
* 获取根显示节点
*
* @readonly
* @type {egret.DisplayObjectContainer}
* @memberof EgretBridge
*/
readonly root: egret.DisplayObjectContainer;
private _stage;
/**
* 获取舞台引用
*
* @readonly
* @type {egret.Stage}
* @memberof EgretBridge
*/
readonly stage: egret.Stage;
private _bgLayer;
/**
* 获取背景容器
*
* @readonly
* @type {egret.DisplayObjectContainer}
* @memberof EgretBridge
*/
readonly bgLayer: egret.DisplayObjectContainer;
private _sceneLayer;
/**
* 获取场景容器
*
* @readonly
* @type {egret.DisplayObjectContainer}
* @memberof EgretBridge
*/
readonly sceneLayer: egret.DisplayObjectContainer;
private _frameLayer;
/**
* 获取框架容器
*
* @readonly
* @type {egret.DisplayObjectContainer}
* @memberof EgretBridge
*/
readonly frameLayer: egret.DisplayObjectContainer;
private _panelLayer;
/**
* 获取弹窗容器
*
* @readonly
* @type {egret.DisplayObjectContainer}
* @memberof EgretBridge
*/
readonly panelLayer: egret.DisplayObjectContainer;
private _maskLayer;
/**
* 获取遮罩容器
*
* @readonly
* @type {egret.DisplayObjectContainer}
* @memberof EgretBridge
*/
readonly maskLayer: egret.DisplayObjectContainer;
private _topLayer;
/**
* 获取顶级容器
*
* @readonly
* @type {egret.DisplayObjectContainer}
* @memberof EgretBridge
*/
readonly topLayer: egret.DisplayObjectContainer;
/**
* 获取通用提示框
*
* @readonly
* @type {IPromptPanelConstructor}
* @memberof EgretBridge
*/
readonly promptClass: IPromptPanelConstructor;
/**
* 获取遮罩实体
*
* @readonly
* @type {IMaskEntity}
* @memberof EgretBridge
*/
readonly maskEntity: IMaskEntity;
/**
* 默认弹窗策略
*
* @type {IPanelPolicy}
* @memberof EgretBridge
*/
defaultPanelPolicy: IPanelPolicy;
/**
* 默认场景切换策略
*
* @type {IScenePolicy}
* @memberof EgretBridge
*/
defaultScenePolicy: IScenePolicy;
constructor(params: IInitParams);
/**
* 初始化表现层桥
* @param {()=>void} complete 初始化完毕后的回调
* @memberof EgretBridge
*/
init(complete: (bridge: IBridge) => void): void;
/**
* 判断皮肤是否是Egret显示对象
*
* @param {*} skin 皮肤对象
* @returns {boolean} 是否是Egret显示对象
* @memberof EgretBridge
*/
isMySkin(skin: any): boolean;
/**
* 包装HTMLElement节点
*
* @param {IMediator} mediator 中介者
* @param {*} skin 原始皮肤
* @returns {egret.DisplayObject} 包装后的皮肤
* @memberof EgretBridge
*/
wrapSkin(mediator: IMediator<egret.DisplayObject>, skin: any): egret.DisplayObject;
/**
* 替换皮肤,用于组件变身时不同表现层桥的处理
*
* @param {IMediator} mediator 中介者
* @param {egret.DisplayObject} current 当前皮肤
* @param {egret.DisplayObject} target 要替换的皮肤
* @returns {egret.DisplayObject} 替换完毕的皮肤
* @memberof EgretBridge
*/
replaceSkin(mediator: IMediator<egret.DisplayObject>, current: egret.DisplayObject, target: egret.DisplayObject): egret.DisplayObject;
/**
* 同步皮肤,用于组件变身后的重新定位
*
* @param {egret.DisplayObject} current 当前皮肤
* @param {egret.DisplayObject} target 替换的皮肤
* @memberof EgretBridge
*/
syncSkin(current: egret.DisplayObject, target: egret.DisplayObject): void;
/**
* 创建一个空的显示对象
*
* @returns {egret.Sprite}
* @memberof EgretBridge
*/
createEmptyDisplay(): egret.Sprite;
/**
* 创建一个占位符
*
* @returns {egret.Sprite}
* @memberof EgretBridge
*/
createPlaceHolder(): egret.Sprite;
/**
* 添加显示
*
* @param {egret.DisplayObjectContainer} parent 要添加到的父容器
* @param {egret.DisplayObject} target 被添加的显示对象
* @return {egret.DisplayObject} 返回被添加的显示对象
* @memberof EgretBridge
*/
addChild(parent: egret.DisplayObjectContainer, target: egret.DisplayObject): egret.DisplayObject;
/**
* 按索引添加显示
*
* @param {egret.DisplayObjectContainer} parent 要添加到的父容器
* @param {egret.DisplayObject} target 被添加的显示对象
* @param {number} index 要添加到的父级索引
* @return {egret.DisplayObject} 返回被添加的显示对象
* @memberof EgretBridge
*/
addChildAt(parent: egret.DisplayObjectContainer, target: egret.DisplayObject, index: number): egret.DisplayObject;
/**
* 移除显示对象
*
* @param {egret.DisplayObjectContainer} parent 父容器
* @param {egret.DisplayObject} target 被移除的显示对象
* @return {egret.DisplayObject} 返回被移除的显示对象
* @memberof EgretBridge
*/
removeChild(parent: egret.DisplayObjectContainer, target: egret.DisplayObject): egret.DisplayObject;
/**
* 按索引移除显示
*
* @param {egret.DisplayObjectContainer} parent 父容器
* @param {number} index 索引
* @return {egret.DisplayObject} 返回被移除的显示对象
* @memberof EgretBridge
*/
removeChildAt(parent: egret.DisplayObjectContainer, index: number): egret.DisplayObject;
/**
* 移除所有显示对象
*
* @param {egret.DisplayObjectContainer} parent 父容器
* @memberof EgretBridge
*/
removeChildren(parent: egret.DisplayObjectContainer): void;
/**
* 获取父容器
*
* @param {egret.DisplayObject} target 目标对象
* @returns {egret.DisplayObjectContainer} 父容器
* @memberof EgretBridge
*/
getParent(target: egret.DisplayObject): egret.DisplayObjectContainer;
/**
* 获取指定索引处的显示对象
*
* @param {egret.DisplayObjectContainer} parent 父容器
* @param {number} index 指定父级索引
* @return {egret.DisplayObject} 索引处的显示对象
* @memberof EgretBridge
*/
getChildAt(parent: egret.DisplayObjectContainer, index: number): egret.DisplayObject;
/**
* 获取显示索引
*
* @param {egret.DisplayObjectContainer} parent 父容器
* @param {egret.DisplayObject} target 子显示对象
* @return {number} target在parent中的索引
* @memberof EgretBridge
*/
getChildIndex(parent: egret.DisplayObjectContainer, target: egret.DisplayObject): number;
/**
* 通过名称获取显示对象
*
* @param {egret.DisplayObjectContainer} parent 父容器
* @param {string} name 对象名称
* @return {egret.DisplayObject} 显示对象
* @memberof EgretBridge
*/
getChildByName(parent: egret.DisplayObjectContainer, name: string): egret.DisplayObject;
/**
* 获取子显示对象数量
*
* @param {egret.DisplayObjectContainer} parent 父容器
* @return {number} 子显示对象数量
* @memberof EgretBridge
*/
getChildCount(parent: egret.DisplayObjectContainer): number;
/**
* 加载资源
*
* @param {string[]} assets 资源数组
* @param {IMediator} mediator 资源列表
* @param {(err?:Error)=>void} handler 回调函数
* @memberof EgretBridge
*/
loadAssets(assets: string[], mediator: IMediator, handler: (err?: Error) => void): void;
/**
* 监听事件,从这个方法监听的事件会在中介者销毁时被自动移除监听
*
* @param {egret.EventDispatcher} target 事件目标对象
* @param {string} type 事件类型
* @param {Function} handler 事件处理函数
* @param {*} [thisArg] this指向对象
* @memberof EgretBridge
*/
mapListener(target: egret.EventDispatcher, type: string, handler: Function, thisArg?: any): void;
/**
* 注销监听事件
*
* @param {egret.EventDispatcher} target 事件目标对象
* @param {string} type 事件类型
* @param {Function} handler 事件处理函数
* @param {*} [thisArg] this指向对象
* @memberof EgretBridge
*/
unmapListener(target: egret.EventDispatcher, type: string, handler: Function, thisArg?: any): void;
/**
* 为绑定的列表显示对象包装一个渲染器创建回调
*
* @param {eui.DataGroup} target BindFor指令指向的显示对象
* @param {(key?:any, value?:any, renderer?:eui.IItemRenderer)=>void} rendererHandler 渲染器创建回调
* @returns {*} 返回一个备忘录对象,会在赋值时提供
* @memberof IBridge
*/
wrapBindFor(target: eui.DataGroup, rendererHandler: (key?: any, value?: any, renderer?: eui.IItemRenderer) => void): any;
/**
* 为列表显示对象赋值
*
* @param {eui.DataGroup} target BindFor指令指向的显示对象
* @param {*} datas 数据集合
* @param {*} memento wrapBindFor返回的备忘录对象
* @memberof IBridge
*/
valuateBindFor(target: eui.DataGroup, datas: any, memento: any): void;
}
export interface IInitParams {
/** 舞台宽度 */
width: number;
/** 舞台高度 */
height: number;
/** Egret工程根目录的相对路径前缀,例如:"egret/" */
pathPrefix: string;
/** DOM容器名称或引用,不传递则自动生成一个 */
container?: string | HTMLElement;
/** 屏幕拉伸模式,使用egret.StageScaleMode中的常量值,默认为egret.StageScaleMode.SHOW_ALL */
scaleMode?: string;
/** 屏幕渲染帧频,默认为60 */
frameRate?: number;
/** 是否显示重绘矩形,默认为false */
showPaintRect?: boolean;
/** 多点触摸的最多点数,默认为2 */
multiFingered?: number;
/** 是否显示帧频信息,默认为false */
showFPS?: boolean;
/** 帧频样式,默认为:"x:0,y:0,size:12,textColor:0xffffff,bgAlpha:0.9"*/
showFPSStyle?: string;
/** 是否显示日志信息,默认为false */
showLog?: boolean;
/** 背景颜色,默认黑色 */
backgroundColor?: number;
/** 渲染模式,在RenderMode中查找枚举值,默认为AUTO **/
renderMode?: RenderMode;
/** 通用提示框类型 */
promptClass?: IPromptPanelConstructor;
/** 遮罩数据 */
maskData?: MaskData;
/** 预加载资源组名 */
preloadGroups?: string[];
/** 嵌入字体名称数组 */
embededFonts?: string[];
/** 是否需要资源版本替换机制,默认为true */
hasAssetsVersion?: boolean;
/** 是否加载主题配置文件,默认为true */
loadThemeConfig?: boolean;
}