跳到主要内容

egret.MovieClip

   egret

   public class MovieClip

继承    egret.MovieClip → egret.DisplayObjectegret.EventDispatcheregret.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
  • 参数

gotoAndPlay()

public gotoAndPlay(frame:string|number,playTimes:number):void

将播放头移到指定帧并播放

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • frame:string|number - 指定帧的帧号或帧标签
    • playTimes:number - 播放次数。 参数为整数,可选参数,>=1:设定播放次数,<0:循环播放,默认值 0:不改变播放次数,

gotoAndStop()

public gotoAndStop(frame:string|number):void

将播放头移到指定帧并停止

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数

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);
}
}