当前位置: 移动技术网 > IT编程>UI设计>设计软件 > AS的LoaderInfo类控制SWF的大小和播放帧频

AS的LoaderInfo类控制SWF的大小和播放帧频

2019年03月21日  | 移动技术网IT编程  | 我要评论
as3的 loaderinfo 类为我们加载外部资源提供了更多的可控信息,以前制作swf播放器的两大难题终于可以得到解决:
* 获得加载swf的舞台大小以缩放到适合尺寸显示
loaderinfo 的 width 和 height 属性便是舞台大小。
* 使加载的swf按自己的帧频播放
loaderinfo 的 framerate 属性为加载swf的帧频,可以修改stage的 framerate 属性适应播放。
  做了一个 简单的例子 ,分别加载300×150帧频5和100×150帧频20的两个swf到200×200大小的区域播放,注释写的很详细,就不啰嗦了。
监听加载事件:

代码:
var t_info : loaderinfo = this.m_loader.contentloaderinfo;
t_info.addeventlistener(event.complete, this.onloaddone);
t_info.addeventlistener(ioerrorevent.io_error, this.onloaderror);
t_info.addeventlistener(progressevent.progress, this.onloadprogress);
显示加载进度:

代码:
private function onloadprogress(p_e : progressevent) : void
{
this.m_loading.progress(p_e.bytesloaded, p_e.bytestotal);
}
显示加载的swf:

代码:
// 隐藏loading
this.m_loading.hide();
// loaderinfo
var t_info : loaderinfo = this.m_loader.contentloaderinfo;
// 载入的mc
this.m_mc = t_info.content as movieclip;
// 载入mc的舞台宽度
var t_stagew : number = t_info.width;
// 载入mc的舞台高度
var t_stageh : number = t_info.height;
// 载入mc的实际宽度
var t_mcw : number = this.m_mc.width;
// 载入mc的实际高度
var t_mch : number = this.m_mc.height;
// 是否缩放mc适应显示宽度(载入mc舞台的宽高比是否大于显示区域宽高比)
var t_scalewidth : boolean = t_stagew / t_stageh > show_w / show_h;
// 缩放比率
var t_scalerate : number = t_scalewidth ? show_w / t_stagew : show_h / t_stageh;
// 缩放mc
this.m_mc.scalex = this.m_mc.scaley = t_scalerate;
// 显示载入mc的显示范围
this.m_mc.scrollrect = new rectangle(0, 0, t_stagew, t_stageh);
// 显示载入mc
this.addchild(this.m_mc);
// 调整显示位置
this.m_mc.x = show_x;
this.m_mc.y = show_y;
if (t_scalewidth) this.m_mc.y = (show_h - t_stageh * t_scalerate) / 2;
else this.m_mc.x = (show_w - t_stagew * t_scalerate) / 2;
// 修改帧频
this.stage.framerate = t_info.framerate;
this.fms.text = string(this.stage.framerate);
// 设置组件
this.sdr.enabled = this.btn1.enabled = this.btn2.enabled = true;
this.sdr.maximum = this.m_mc.totalframes;
// 监听mc事件
this.addeventlistener(event.enter_frame, this.onenterframe);
另外加了一个 slider 组件来控制播放,前提是加载的swf必须发布为player9,as3:

代码:
this.sdr.addeventlistener(sliderevent.change, this.onchangesdr);
this.sdr.addeventlistener(sliderevent.thumb_press, this.onpresssdr);
this.sdr.addeventlistener(sliderevent.thumb_release, this.onreleasesdr);
private function onchangesdr(p_e : sliderevent) : void
{
if (this.m_ispresssdr) this.m_mc.gotoandstop(p_e.value);
}
private function onpresssdr(p_e : sliderevent) : void
{
this.m_ispresssdr = true;
this.m_mc.stop();
}
private function onreleasesdr(p_e : sliderevent) : void
{
this.m_ispresssdr = false;
this.m_mc.play();
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网