用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   有意向写收费精品教程的朋友,请联系本站合作
当前位置 :首页>flash教程>Flash as程序>列表

载入swf自获舞台的宽高

[来源:愚人呓语 | 作者:愚人呓语 | 时间:2008-10-02 | 点击:  | 收藏本文  【 】]
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();
}

示例演示 | 源代码
   
文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:as制作可拖动单元格的菜单
下一篇:AS入门第一课:认识编程环境
Tags:    
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  教程分类
  基础操作   动画特效
  应用开发   组件学习
  As程序   动画教程
  Flash cs3   AS 3.0
  FCS/FMS教程   Loading教程
  Flash与Web   Flash教程连载
  相关文章
·BitmapData画源图片中的一部分
·flash加减法小游戏的制作过程
·flash打造随机获得游戏关卡密码
·AS入门第五课:数组
·AS常用语句 第三节-循环语句
·AS常用语句 第二节-条件语句
·AS入门第四课:AS常用语句 第一
·AS入门第三课:AS基本语法
·AS入门第二课:面向对象编程基础
·AS入门第一课:认识编程环境
  热门文章
·Flash进度条的制作详细讲解(组图)
·flash幻灯片网页效果
·Flex 3 AdvancedDataGrid的使用(第二
·全Flash动画网站实现的基础教学
·flash水影效果字
·Flash打造简单的飘雪动画视觉特效
·FLASH+XML相册(附源码)
·超酷flash光晕移动效果
·Flash旋转拖尾文字效果的制作教程
·Flash制作大雪纷飞效果动画
·flash春雷闪电效果
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号