UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

156 lines (145 loc) 5.51 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 { /** * The Sprite class is a basic display list building block: a display list node that can contain children. * @version Egret 2.4 * @platform Web,Native * @includeExample egret/display/Sprite.ts * @language en_US */ /** * Sprite 类是基本显示列表构造块:一个可包含子项的显示列表节点。 * @version Egret 2.4 * @platform Web,Native * @includeExample egret/display/Sprite.ts * @language zh_CN */ export class Sprite extends DisplayObjectContainer { /** * Creates a new Sprite instance. * @version Egret 2.4 * @platform Web,Native * @language en_US */ /** * 实例化一个容器 * @version Egret 2.4 * @platform Web,Native * @language zh_CN */ public constructor() { super(); this.$graphics = new Graphics(); this.$graphics.$setTarget(this); } /** * @private */ $graphics:Graphics; /** * Specifies the Graphics object belonging to this Shape object, where vector drawing commands can occur. * @version Egret 2.4 * @platform Web,Native * @language en_US */ /** * 获取 Shape 中的 Graphics 对象。可通过此对象执行矢量绘图命令。 * @version Egret 2.4 * @platform Web,Native * @language zh_CN */ public get graphics():Graphics { return this.$graphics; } $hitTest(stageX:number, stageY:number):DisplayObject { if (!this.$visible) { return null; } let m = this.$getInvertedConcatenatedMatrix(); let localX = m.a * stageX + m.c * stageY + m.tx; let localY = m.b * stageX + m.d * stageY + m.ty; let rect = this.$scrollRect ? this.$scrollRect : this.$maskRect; if (rect && !rect.contains(localX, localY)) { return null; } if (this.$mask && !this.$mask.$hitTest(stageX, stageY)) { return null; } let children = this.$children; let found = false; let target:DisplayObject = null; for (let i = children.length - 1; i >= 0; i--) { let child = children[i]; if (child.$maskedObject) { continue; } target = child.$hitTest(stageX, stageY); if (target) { found = true; if(target.$touchEnabled){ break; } else{ target = null; } } } if (target) { if (this.$touchChildren) { return target; } return this; } if (found) { return this; } target = DisplayObject.prototype.$hitTest.call(this, stageX, stageY); if (target) { target = this.$graphics.$hitTest(stageX, stageY); } return target; } /** * @private */ $measureContentBounds(bounds:Rectangle):void { this.$graphics.$measureContentBounds(bounds); } /** * @private */ public $onRemoveFromStage():void { super.$onRemoveFromStage(); if(this.$graphics) { this.$graphics.$onRemoveFromStage(); } } } }