UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

311 lines (302 loc) 13.5 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 eui { /** * The eui.CollectionEvent class represents an event that is * dispatched when the associated collection changes. * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @includeExample extension/eui/events/CollectionEventExample.ts * @language en_US */ /** * 集合类型数据改变事件 * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @includeExample extension/eui/events/CollectionEventExample.ts * @language zh_CN */ export class CollectionEvent extends egret.Event { /** * Dispatched when a collection has changed. * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 集合类数据发生改变 * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public static COLLECTION_CHANGE:string = "collectionChange"; /** * Constructor. * * @param type The event type; indicates the action that triggered the event. * @param bubbles Specifies whether the event can bubble * up the display list hierarchy. * @param cancelable Specifies whether the behavior * associated with the event can be prevented. * @param kind Indicates the kind of event that occured. * The parameter value can be one of the values in the CollectionEventKind * class, or <code>null</code>, which indicates that the kind is unknown. * @param location When the <code>kind</code> is * <code>CollectionEventKind.ADD</code>, * <code>CollectionEventKind.REMOVE</code>, * <code>CollectionEventKind.REPLACE</code>,or * <code>CollectionEventKind.UPDATE</code> * this value indicates at what location the item(s) specified * in the <code>items property</code> can be found * within the target collection. * @param oldLocation this value indicates * the old location within the target collection * of the item(s) specified in the <code>items</code> property. * @param items Array of objects with information about the items * affected by the event. * @param oldItems When the <code>kine</code> is <code>CollectionEventKind.REPLACE</code> the value represents * a list of items before replaced. * * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 创建一个 CollectionEvent 实例 * * @param type 事件类型;指示触发事件的动作。 * @param bubbles 指定该事件是否可以在显示列表层次结构得到冒泡处理。 * @param cancelable 指定是否可以防止与事件相关联的行为。 * @param kind 指示发生的事件类型。此属性值可以是 CollectionEventKind 类中的一个值,也可以是 null,用于指示类型未知。 * @param location 如果 kind 值为 <code>CollectionEventKind.ADD</code>, * <code>CollectionEventKind.REMOVE</code>, * <code>CollectionEventKind.REPLACE</code>,或 * <code>CollectionEventKind.UPDATE</code> * 则此属性为 items 属性中指定的项目集合中零号元素的的索引。 * @param oldLocation 此值指示 <code>items</code> 属性中指定的项目在目标集合中的原位置。 * @param items 受事件影响的项目的列表。 * @param oldItems 仅当kind的值为CollectionEventKind.REPLACE时,表示替换前的项目列表。 * * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public constructor(type:string, bubbles?:boolean, cancelable?:boolean, kind?:string, location?:number, oldLocation?:number, items?:any[], oldItems?:any[]) { super(type, bubbles, cancelable); this.$initTo(kind, location, oldLocation, items, oldItems); } /** * @private * * @param kind * @param location * @param oldLocation * @param items * @param oldItems */ $initTo(kind?:string, location?:number, oldLocation?:number, items?:any[], oldItems?:any[]):void { this.kind = kind; this.location = +location | 0; this.oldLocation = +oldLocation | 0; this.items = items || []; this.oldItems = oldItems || []; } /** * Indicates the kind of event that occured. * The parameter value can be one of the values in the CollectionEventKind * class, or <code>null</code>, which indicates that the kind is unknown. * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 指示发生的事件类型。此属性值可以是 CollectionEventKind 类中的一个值,也可以是 null,用于指示类型未知。 * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public kind:string; /** * Array of objects with information about the items. * affected by the event. * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 受事件影响的项目的列表。 * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public items:any[]; /** * When the <code>kine</code> is <code>CollectionEventKind.REPLACE</code> the value represents * a list of items before replaced. * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 仅当kind的值为CollectionEventKind.REPLACE时,表示替换前的项目列表。 * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public oldItems:any[]; /** * When the <code>kind</code> is * <code>CollectionEventKind.ADD</code>, * <code>CollectionEventKind.REMOVE</code>, * <code>CollectionEventKind.REPLACE</code>,or * <code>CollectionEventKind.UPDATE</code> * this value indicates at what location the item(s) specified * in the <code>items property</code> can be found * within the target collection. * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 如果 kind 值为 CollectionEventKind.ADD、 * CollectionEventKind.REMOVE 或 CollectionEventKind.REPLACE, * CollectionEventKind.UPDATE * 则此属性为 items 属性中指定的项目集合中零号元素的的索引。 * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public location:number; /** * this value indicates * the old location within the target collection * of the item(s) specified in the <code>items</code> property. * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 此属性为 items 属性中指定的项目在目标集合中原来位置的从零开始的索引。 * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public oldLocation:number; /** * @inheritDoc * * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native */ protected clean():void{ super.clean(); this.items = this.oldItems = null; } /** * Dispatch an event with specified EventDispatcher. The dispatched event will be cached in the object pool, * for the next cycle of reuse. * * @param target the target of event dispatcher. * @param eventType The event type; indicates the action that triggered the event. * @param kind Indicates the kind of event that occured. * The parameter value can be one of the values in the CollectionEventKind * class, or <code>null</code>, which indicates that the kind is unknown. * @param location When the <code>kind</code> is * <code>CollectionEventKind.ADD</code>, * <code>CollectionEventKind.REMOVE</code>, * <code>CollectionEventKind.REPLACE</code>,or * <code>CollectionEventKind.UPDATE</code> * this value indicates at what location the item(s) specified * in the <code>items property</code> can be found * within the target collection. * @param oldLocation this value indicates * the old location within the target collection * of the item(s) specified in the <code>items</code> property. * @param items Array of objects with information about the items * affected by the event. * @param oldItems When the <code>kine</code> is <code>CollectionEventKind.REPLACE</code> the value represents * a list of items before replaced. * * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language en_US */ /** * 使用指定的EventDispatcher对象来抛出事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。 * * @param target 事件派发目标。 * @param eventType 事件类型;指示触发事件的动作。 * @param kind 指示发生的事件类型。此属性值可以是 CollectionEventKind 类中的一个值,也可以是 null,用于指示类型未知。 * @param location 如果 kind 值为 <code>CollectionEventKind.ADD</code>, * <code>CollectionEventKind.REMOVE</code>, * <code>CollectionEventKind.REPLACE</code>,或 * <code>CollectionEventKind.UPDATE</code> * 则此属性为 items 属性中指定的项目集合中零号元素的的索引。 * @param oldLocation 此值指示 <code>items</code> 属性中指定的项目在目标集合中的原位置。 * @param items 受事件影响的项目的列表。 * @param oldItems 仅当kind的值为CollectionEventKind.REPLACE时,表示替换前的项目列表。 * * @version Egret 2.4 * @version eui 1.0 * @platform Web,Native * @language zh_CN */ public static dispatchCollectionEvent(target:egret.IEventDispatcher, eventType:string, kind?:string, location?:number, oldLocation?:number, items?:any[], oldItems?:any[]):boolean { if (!target.hasEventListener(eventType)) { return true; } let event = egret.Event.create(CollectionEvent, eventType); event.$initTo(kind, location, oldLocation, items, oldItems); let result = target.dispatchEvent(event); egret.Event.release(event); return result; } } }