首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

载入swf从获舞台的宽高

2012-11-25 
载入swf自获舞台的宽高AS3的 LoaderInfo 类为我们加载外部资源提供了更多的可控信息,以前制作SWF播放器的

载入swf自获舞台的宽高

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();
}
[1b]示例演示[/1b]
[1b] | [/1b]
[1b]源代码[/1b]
???
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/4470.html

热点排行