UNPKG

laya-coreui-es

Version:

laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改

195 lines (194 loc) 14.2 kB
import { AnimationBase } from "./AnimationBase"; import { Handler } from "../utils/Handler"; /** * 动画播放完毕后调度。 * @eventType Event.COMPLETE */ /** * 播放到某标签后调度。 * @eventType Event.LABEL */ /** * <p> <code>Animation</code> 是Graphics动画类。实现了基于Graphics的动画创建、播放、控制接口。</p> * <p>本类使用了动画模版缓存池,它以一定的内存开销来节省CPU开销,当相同的动画模版被多次使用时,相比于每次都创建新的动画模版,使用动画模版缓存池,只需创建一次,缓存之后多次复用,从而节省了动画模版创建的开销。</p> * <p>动画模版缓存池,以key-value键值对存储,key可以自定义,也可以从指定的配置文件中读取,value为对应的动画模版,是一个Graphics对象数组,每个Graphics对象对应一个帧图像,动画的播放实质就是定时切换Graphics对象。</p> * <p>使用set source、loadImages(...)、loadAtlas(...)、loadAnimation(...)方法可以创建动画模版。使用play(...)可以播放指定动画。</p> * @example <caption>以下示例代码,创建了一个 <code>Text</code> 实例。</caption> * package * { * import laya.display.Animation; * import laya.net.Loader; * import laya.utils.Handler; * public class Animation_Example * { * public function Animation_Example() * { * Laya.init(640, 800);//设置游戏画布宽高、渲染模式。 * Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。 * init();//初始化 * } * private function init():void * { * var animation:Animation = new Animation();//创建一个 Animation 类的实例对象 animation 。 * animation.loadAtlas("resource/ani/fighter.json");//加载图集并播放 * animation.x = 200;//设置 animation 对象的属性 x 的值,用于控制 animation 对象的显示位置。 * animation.y = 200;//设置 animation 对象的属性 x 的值,用于控制 animation 对象的显示位置。 * animation.interval = 50;//设置 animation 对象的动画播放间隔时间,单位:毫秒。 * animation.play();//播放动画。 * Laya.stage.addChild(animation);//将 animation 对象添加到显示列表。 * } * } * } * * @example * Animation_Example(); * function Animation_Example(){ * Laya.init(640, 800);//设置游戏画布宽高、渲染模式。 * Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。 * init();//初始化 * } * function init() * { * var animation = new Laya.Animation();//创建一个 Animation 类的实例对象 animation 。 * animation.loadAtlas("resource/ani/fighter.json");//加载图集并播放 * animation.x = 200;//设置 animation 对象的属性 x 的值,用于控制 animation 对象的显示位置。 * animation.y = 200;//设置 animation 对象的属性 x 的值,用于控制 animation 对象的显示位置。 * animation.interval = 50;//设置 animation 对象的动画播放间隔时间,单位:毫秒。 * animation.play();//播放动画。 * Laya.stage.addChild(animation);//将 animation 对象添加到显示列表。 * } * * @example * import Animation = laya.display.Animation; * class Animation_Example { * constructor() { * Laya.init(640, 800);//设置游戏画布宽高、渲染模式。 * Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。 * this.init(); * } * private init(): void { * var animation:Animation = new Laya.Animation();//创建一个 Animation 类的实例对象 animation 。 * animation.loadAtlas("resource/ani/fighter.json");//加载图集并播放 * animation.x = 200;//设置 animation 对象的属性 x 的值,用于控制 animation 对象的显示位置。 * animation.y = 200;//设置 animation 对象的属性 x 的值,用于控制 animation 对象的显示位置。 * animation.interval = 50;//设置 animation 对象的动画播放间隔时间,单位:毫秒。 * animation.play();//播放动画。 * Laya.stage.addChild(animation);//将 animation 对象添加到显示列表。 * } * } * new Animation_Example(); */ export declare class Animation extends AnimationBase { /** * <p>动画模版缓存池,以key-value键值对存储,key可以自定义,也可以从指定的配置文件中读取,value为对应的动画模版,是一个Graphics对象数组,每个Graphics对象对应一个帧图像,动画的播放实质就是定时切换Graphics对象。</p> * <p>使用loadImages(...)、loadAtlas(...)、loadAnimation(...)、set source方法可以创建动画模版。使用play(...)可以播放指定动画。</p> */ static framesMap: any; /**@private */ protected _frames: any[]; /**@private */ protected _url: string; /** * 创建一个新的 <code>Animation</code> 实例。 */ constructor(); /** @inheritDoc * @override */ destroy(destroyChild?: boolean): void; /** * <p>开始播放动画。会在动画模版缓存池中查找key值为name的动画模版,存在则用此动画模版初始化当前序列帧, 如果不存在,则使用当前序列帧。</p> * <p>play(...)方法被设计为在创建实例后的任何时候都可以被调用,调用后就处于播放状态,当相应的资源加载完毕、调用动画帧填充方法(set frames)或者将实例显示在舞台上时,会判断是否处于播放状态,如果是,则开始播放。</p> * <p>配合wrapMode属性,可设置动画播放顺序类型。</p> * @param start (可选)指定动画播放开始的索引(int)或帧标签(String)。帧标签可以通过addLabel(...)和removeLabel(...)进行添加和删除。 * @param loop (可选)是否循环播放。 * @param name (可选)动画模板在动画模版缓存池中的key,也可认为是动画名称。如果name为空,则播放当前动画序列帧;如果不为空,则在动画模版缓存池中寻找key值为name的动画模版,如果存在则用此动画模版初始化当前序列帧并播放,如果不存在,则仍然播放当前动画序列帧;如果没有当前动画的帧数据,则不播放,但该实例仍然处于播放状态。 * @override */ play(start?: any, loop?: boolean, name?: string): void; /**@private */ protected _setFramesFromCache(name: string, showWarn?: boolean): boolean; /**@private */ private _copyLabels; /**@private * @override */ protected _frameLoop(): void; /**@private * @override */ protected _displayToIndex(value: number): void; /** * 当前动画的帧图像数组。本类中,每个帧图像是一个Graphics对象,而动画播放就是定时切换Graphics对象的过程。 */ get frames(): any[]; set frames(value: any[]); /** * <p>动画数据源。</p> * <p>类型如下:<br/> * 1. LayaAir IDE动画文件路径:使用此类型需要预加载所需的图集资源,否则会创建失败,如果不想预加载或者需要创建完毕的回调,请使用loadAnimation(...)方法;<br/> * 2. 图集路径:使用此类型创建的动画模版不会被缓存到动画模版缓存池中,如果需要缓存或者创建完毕的回调,请使用loadAtlas(...)方法;<br/> * 3. 图片路径集合:使用此类型创建的动画模版不会被缓存到动画模版缓存池中,如果需要缓存,请使用loadImages(...)方法。</p> * @param value 数据源。比如:图集:"xx/a1.atlas";图片集合:"a1.png,a2.png,a3.png";LayaAir IDE动画"xx/a1.ani"。 */ set source(value: string); /** * 设置自动播放的动画名称,在LayaAir IDE中可以创建的多个动画组成的动画集合,选择其中一个动画名称进行播放。 */ set autoAnimation(value: string); /** * 是否自动播放,默认为false。如果设置为true,则动画被创建并添加到舞台后自动播放。 */ set autoPlay(value: boolean); /** * 停止动画播放,并清理对象属性。之后可存入对象池,方便对象复用。 * @override */ clear(): AnimationBase; /** * <p>根据指定的动画模版初始化当前动画序列帧。选择动画模版的过程如下:1. 动画模版缓存池中key为cacheName的动画模版;2. 如果不存在,则加载指定的图片集合并创建动画模版。注意:只有指定不为空的cacheName,才能将创建好的动画模版以此为key缓存到动画模版缓存池,否则不进行缓存。</p> * <p>动画模版缓存池是以一定的内存开销来节省CPU开销,当相同的动画模版被多次使用时,相比于每次都创建新的动画模版,使用动画模版缓存池,只需创建一次,缓存之后多次复用,从而节省了动画模版创建的开销。</p> * <p>因为返回值为Animation对象本身,所以可以使用如下语法:loadImages(...).loadImages(...).play(...);。</p> * @param urls 图片路径集合。需要创建动画模版时,会以此为数据源。参数形如:[url1,url2,url3,...]。 * @param cacheName (可选)动画模板在动画模版缓存池中的key。如果此参数不为空,表示使用动画模版缓存池。如果动画模版缓存池中存在key为cacheName的动画模版,则使用此模版。否则,创建新的动画模版,如果cacheName不为空,则以cacheName为key缓存到动画模版缓存池中,如果cacheName为空,不进行缓存。 * @return 返回Animation对象本身。 */ loadImages(urls: any[], cacheName?: string): Animation; /** * <p>根据指定的动画模版初始化当前动画序列帧。选择动画模版的过程如下:1. 动画模版缓存池中key为cacheName的动画模版;2. 如果不存在,则加载指定的图集并创建动画模版。</p> * <p>注意:只有指定不为空的cacheName,才能将创建好的动画模版以此为key缓存到动画模版缓存池,否则不进行缓存。</p> * <p>动画模版缓存池是以一定的内存开销来节省CPU开销,当相同的动画模版被多次使用时,相比于每次都创建新的动画模版,使用动画模版缓存池,只需创建一次,缓存之后多次复用,从而节省了动画模版创建的开销。</p> * <p>因为返回值为Animation对象本身,所以可以使用如下语法:loadAtlas(...).loadAtlas(...).play(...);。</p> * @param url 图集路径。需要创建动画模版时,会以此为数据源。 * @param loaded (可选)使用指定图集初始化动画完毕的回调。 * @param cacheName (可选)动画模板在动画模版缓存池中的key。如果此参数不为空,表示使用动画模版缓存池。如果动画模版缓存池中存在key为cacheName的动画模版,则使用此模版。否则,创建新的动画模版,如果cacheName不为空,则以cacheName为key缓存到动画模版缓存池中,如果cacheName为空,不进行缓存。 * @return 返回动画本身。 */ loadAtlas(url: string, loaded?: Handler, cacheName?: string): Animation; /** * <p>加载并解析由LayaAir IDE制作的动画文件,此文件中可能包含多个动画。默认帧率为在IDE中设计的帧率,如果调用过set interval,则使用此帧间隔对应的帧率。加载后创建动画模版,并缓存到动画模版缓存池,key "url#动画名称" 对应相应动画名称的动画模板,key "url#" 对应动画模版集合的默认动画模版。</p> * <p>注意:如果调用本方法前,还没有预加载动画使用的图集,请将atlas参数指定为对应的图集路径,否则会导致动画创建失败。</p> * <p>动画模版缓存池是以一定的内存开销来节省CPU开销,当相同的动画模版被多次使用时,相比于每次都创建新的动画模版,使用动画模版缓存池,只需创建一次,缓存之后多次复用,从而节省了动画模版创建的开销。</p> * <p>因为返回值为Animation对象本身,所以可以使用如下语法:loadAnimation(...).loadAnimation(...).play(...);。</p> * @param url 动画文件路径。可由LayaAir IDE创建并发布。 * @param loaded (可选)使用指定动画资源初始化动画完毕的回调。 * @param atlas (可选)动画用到的图集地址(可选)。 * @return 返回动画本身。 */ loadAnimation(url: string, loaded?: Handler, atlas?: string): Animation; /**@private */ private _loadAnimationData; /** * <p>创建动画模板,多个动画可共享同一份动画模板,而不必每次都创建一份新的,从而节省创建Graphics集合的开销。</p> * @param url 图集路径或者图片路径数组。如果是图集路径,需要相应图集已经被预加载,如果没有预加载,会导致创建失败。 * @param name 动画模板在动画模版缓存池中的key。如果不为空,则以此为key缓存动画模板,否则不缓存。 * @return 动画模板。 */ static createFrames(url: string | string[], name: string): any[]; /** * <p>从动画模版缓存池中清除指定key值的动画数据。</p> * <p>开发者在调用创建动画模版函数时,可以手动指定此值。而如果是由LayaAir IDE创建的动画集,解析后的key格式为:"url#":表示动画集的默认动画模版,如果以此值为参数,会清除整个动画集数据;"url#aniName":表示相应名称的动画模版。</p> * @param key 动画模板在动画模版缓存池中的key。 */ static clearCache(key: string): void; }