egret.MovieClip
包 egret
类 public class MovieClip
继承 egret.MovieClip → egret.DisplayObject → egret.EventDispatcher → egret.HashObject
影片剪辑,可以通过影片剪辑播放序列帧动画。MovieClip 类从以下类继承而来:DisplayObject 和 EventDispatcher。不同于 DisplayObject 对象,MovieClip 对象拥有一个时间轴。
公共属性
属性 |
---|
currentFrame : number MovieClip 实例当前播放的帧的序号 |
currentFrameLabel : string MovieClip 实例当前播放的帧的标签 |
currentLabel : string 当前播放的帧对应的标签,如果当前帧没有标签,则currentLabel返回包含标签的先前帧的标签 |
frameRate : number MovieClip 实例的帧频 |
isPlaying : boolean MovieClip 实例当前是否正在播放 |
movieClipData : egret.MovieClipData MovieClip数据源 |
smoothing : boolean 控制在缩放时是否进行平滑处理 |
totalFrames : number MovieClip 实例中帧的总数 |
公共方法
方法 |
---|
MovieClip(movieClipData:egret.MovieClipData) 创建新的 MovieClip 实例 |
gotoAndPlay(frame:string |
gotoAndStop(frame:string |
nextFrame():void 跳到后一帧并停止 |
play(playTimes:number):void 继续播放当前动画 |
prevFrame():void 将播放头移到前一帧并停止 |
stop():void 暂停播放动画 |
事件
Events |
---|
egret.Event.COMPLETE 动画播放完成。 |
egret.Event.LOOP_COMPLETE 动画循环播放完成。循环最后一次只派发 COMPLETE 事件,不派发 LOOP_COMPLETE 事件。 |
egret.Event.ADDED 将显示对象添加到显示列表中时调度。 |
egret.Event.ADDED_TO_STAGE 在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。 |
egret.Event.REMOVED 将要从显示列表中删除显示对象时调度。 |
egret.Event.REMOVED_FROM_STAGE 在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。 |
egret.Event.ENTER_FRAME [广播事件] 播放头进入新帧时调度。 |
egret.Event.RENDER [广播事件] 将要更新和呈现显示列表时调度。 |
egret.TouchEvent.TOUCH_MOVE 当用户触碰设备时进行调度,而且会连续调度,直到接触点被删除。 |
egret.TouchEvent.TOUCH_BEGIN 当用户第一次触摸启用触摸的设备时(例如,用手指触摸手机屏幕)调度。 |
egret.TouchEvent.TOUCH_END 当用户移除与启用触摸的设备的接触时(例如,将手指从屏幕上抬起)调度。 |
egret.TouchEvent.TOUCH_TAP 当用户在启用触摸设备上的已启动接触的同一 DisplayObject 实例上抬起接触点时(例如,手机点击屏幕后抬起)调度。 |
egret.TouchEvent.TOUCH_RELEASE_OUTSIDE 当用户在启用触摸设备上的已启动接触的不同 DisplayObject 实例上抬起接触点时(例如,按住屏幕上的某个对象,然后从它上面挪开后再松开手指)调度。 |
属性详细信息
currentFrame
currentFrame : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
MovieClip 实例当前播放的帧的序号
currentFrameLabel
currentFrameLabel : string
- 支持版本:Egret 2.4
- 运行平台:Web,Native
MovieClip 实例当前播放的帧的标签。如果当前帧没有标签,则 currentFrameLabel返回null。
currentLabel
currentLabel : string
- 支持版本:Egret 2.4
- 运行平台:Web,Native
当前播放的帧对应的标签,如果当前帧没有标签,则currentLabel返回包含标签的先前帧的标签。如果当前帧和先前帧都不包含标签,currentLabel返回null。
frameRate
frameRate : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
MovieClip 实例的帧频
isPlaying
isPlaying : boolean
- 支持版本:Egret 2.4
- 运行平台:Web,Native
MovieClip 实例当前是否正在播放
movieClipData
movieClipData : egret.MovieClipData
- 支持版本:all
- 运行平台:Web,Native
MovieClip数据源
smoothing
smoothing : boolean
- 支持版本:Egret 3.0
- 运行平台:Web
控制在缩放时是否进行平滑处理。
totalFrames
totalFrames : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
MovieClip 实例中帧的总数
方法详细信息
MovieClip()
public MovieClip(movieClipData:egret.MovieClipData)
创建新的 MovieClip 实例。创建 MovieClip 之后,调用舞台上的显示对象容器的addElement方法。
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
- movieClipData:egret.MovieClipData - 被引用的 movieClipData 对象
gotoAndPlay()
public gotoAndPlay(frame:string|number,playTimes:number):void
将播放头移到指定帧并播放
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
gotoAndStop()
public gotoAndStop(frame:string|number):void
将播放头移到指定帧并停止
nextFrame()
public nextFrame():void
跳到后一帧并停止
- 支持版本:Egret 2.4
- 运行平台:Web,Native
play()
public play(playTimes:number):void
继续播放当前动画
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
- playTimes:number - 播放次数。 参数为整数,可选参数,>=1:设定播放次数,<0:循环播放,默认值 0:不改变播放次数(MovieClip初始播放次数设置为1),
prevFrame()
public prevFrame():void
将播放头移到前一帧并停止
- 支持版本:Egret 2.4
- 运行平台:Web,Native
stop()
public stop():void
暂停播放动画
- 支持版本:Egret 2.4
- 运行平台:Web,Native
示例
/*
* 以下示例演示了 MovieClip 序列帧动画的使用。
* 该示例中假设资源已经用RES模块加载完成
*/
class MovieClipExample extends egret.DisplayObjectContainer {
private data: any;
private texture: egret.Texture;
public constructor() {
super();
const loader: egret.HttpRequest = new egret.HttpRequest();
loader.responseType = egret.HttpResponseType.TEXT;
loader.addEventListener(egret.Event.COMPLETE, this.onLoadJsonComplete, this);
loader.open("resource/assets/chunli.json", egret.HttpMethod.GET);
loader.send();
}
private onLoadJsonComplete(event: egret.Event): void {
const loader: egret.HttpRequest = <egret.HttpRequest>event.target;
this.data = JSON.parse(loader.response);
const imageLoader: egret.ImageLoader = new egret.ImageLoader();
imageLoader.addEventListener(egret.Event.COMPLETE, this.onLoadTextureComplete, this);
imageLoader.load("resource/assets/chunli.png");
}
private onLoadTextureComplete(event: egret.Event): void {
const loader: egret.ImageLoader = <egret.ImageLoader>event.target;
//获取加载到的纹理对象
const bitmapData: egret.BitmapData = loader.data;
//创建纹理对象
this.texture = new egret.Texture();
this.texture.bitmapData = bitmapData;
this.createMovieClip();
}
private createMovieClip(): void {
//创建动画工厂
const mcDataFactory: egret.MovieClipDataFactory = new egret.MovieClipDataFactory(this.data, this.texture);
//创建 MovieClip,将工厂生成的 MovieClipData 传入参数
const mc: egret.MovieClip = new egret.MovieClip(mcDataFactory.generateMovieClipData("test"));
this.addChild(mc);
//添加播放完成事件
mc.addEventListener(egret.Event.COMPLETE, function () {
egret.log("COMPLETE");
}, this);
//添加循环播放完成事件
mc.addEventListener(egret.Event.LOOP_COMPLETE, function () {
egret.log("LOOP_COMPLETE");
}, this);
//播放攻击动画
mc.gotoAndPlay("attack", -1);
}
}