UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

175 lines (156 loc) 6.08 kB
////////////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2014-present, Egret Technology. // All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the name of the Egret nor the // names of its contributors may be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // ////////////////////////////////////////////////////////////////////////////////////// namespace egret { /** * @version Egret 2.4 * @platform Web,Native * @includeExample extension/game/player/Ticker.ts * @language en_US */ /** * @version Egret 2.4 * @platform Web,Native * @includeExample extension/game/player/Ticker.ts * @language zh_CN */ export class Ticker extends EventDispatcher { /** * @deprecated * @version Egret 2.4 * @platform Web,Native */ public constructor() { super(); if (Ticker.instance != null) { if (DEBUG) { egret.$error(1033); } } ticker.$startTick(this.update, this); this._lastTime = egret.getTimer(); } private _timeScale:number = 1; private _paused:boolean = false; private _callIndex:number = -1; private _callList:any[]; private _lastTime:number = 0; private update(timeStamp:number):boolean { let advancedTime:number = timeStamp - this._lastTime; this._lastTime = timeStamp; if (this._paused){ return false; } let frameTime:number = advancedTime * this._timeScale; this._callList = this.callBackList.concat(); this._callIndex = 0; for (; this._callIndex < this._callList.length; this._callIndex++) { let eventBin:any = this._callList[this._callIndex]; eventBin.listener.call(eventBin.thisObject, frameTime); } this._callIndex = -1; this._callList = null; return false; } private callBackList:any[] = []; /** * 注册帧回调事件,同一函数的重复监听会被忽略。推荐使用 egret.startTick 替代此方法。 * @method egret.Ticker#register * @param listener {Function} 帧回调函数,参数返回上一帧和这帧的间隔时间。示例:onEnterFrame(frameTime:number):void * @param thisObject {any} 帧回调函数的this对象 * @param priority {number} 事件优先级,开发者请勿传递 Number.NEGATIVE_INFINITY 和 Number.POSITIVE_INFINITY * @version Egret 2.4 * @platform Web,Native * @deprecated */ public register(listener:Function, thisObject:any, priority:number = 0):void { this.$insertEventBin(this.callBackList, "", listener, thisObject, false, priority, false); } /** * 取消侦听enterFrame事件。推荐使用 egret.stopTick 替代此方法。 * @method egret.Ticker#unregister * @param listener {Function} 事件侦听函数 * @param thisObject {any} 侦听函数的this对象 * @version Egret 2.4 * @platform Web,Native * @deprecated */ public unregister(listener:Function, thisObject:any):void { this.$removeEventBin(this.callBackList, listener, thisObject); } /** * @deprecated * @param timeScale {number} * @private */ public setTimeScale(timeScale:number):void { this._timeScale = timeScale; } /** * @deprecated * @method egret.Ticker#getTimeScale * @private */ public getTimeScale():number { return this._timeScale; } /** * 暂停 * @deprecated * @method egret.Ticker#pause */ public pause():void { this._paused = true; } /** * 继续 * @deprecated * @method egret.Ticker#resume */ public resume():void { this._paused = false; } /** * @private */ private static instance:egret.Ticker; /** * @method egret.Ticker.getInstance * @returns {Ticker} * @version Egret 2.4 * @platform Web,Native * @deprecated */ public static getInstance():egret.Ticker { if (Ticker.instance == null) { Ticker.instance = new Ticker(); } return Ticker.instance; } } }