专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Flash教程 » flash加载进度条:Flash加载外部文件创建进度条3种思路方法 »正文

flash加载进度条:Flash加载外部文件创建进度条3种思路方法

来源: 发布时间:星期五, 2009年1月23日 浏览:169次 评论:0
  加载外部文件进度条(看帮助文档整理)只适合那些不愿看帮助文档新手我只不过加了些注释

  为加载图像文件或 SWF 文件创建进度条

  创建个名为 loadImage.fla 新 Flash 文档

  选择"修改">"文档"在宽度文本框中键入 700在高度文本框中键入 500从而更改文档尺寸

  在时间轴中选择第 1 帧然后在"动作"面板中键入下面代码:

// 创建剪辑来承载您内容
this.createEmptyMovieClip("progressBar_mc", 0);
progressBar_mc.createEmptyMovieClip("bar_mc", 1);
progressBar_mc.createEmptyMovieClip("stroke_mc", 2);
// 创建进度框
with (progressBar_mc.stroke_mc) {
  lineStyle(0, 0x000000);
  moveTo(0, 0);
  lineTo(100, 0);
  lineTo(100, 10);
  lineTo(0, 10);
  lineTo(0, 0);
}
//创建进度条
with (progressBar_mc.bar_mc) {
  beginFill(0xFF0000, 100);
  moveTo(0, 0);
  lineTo(100, 0);
  lineTo(100, 10);
  lineTo(0, 10);
  lineTo(0, 0);
  endFill;
  _xscale = 0;
}
//进度坐标
progressBar_mc._x = 2;
progressBar_mc._y = 2;
//加载进度
var mclListener:Object = Object;
//开始加载时进度条缩放为0
mclListener.onLoadStart = function(target_mc:MovieClip) {
  progressBar_mc.bar_mc._xscale = 0;
};
//在加载过程中进度条进行缩放
mclListener.onLoadProgress = function(target_mc:MovieClip, sLoaded:Number, sTotal:Number) {
  progressBar_mc.bar_mc._xscale = Math.round(sLoaded/sTotal*100);
};
//加载完成后进度移除
mclListener.onLoadComplete = function(target_mc:MovieClip) {
  progressBar_mc.removeMovieClip;
};
//当执行加载剪辑帧上动作时(这里设置加载外部文件宽高设置)
mclListener.onLoadInit = function(target_mc:MovieClip) {
  target_mc._height = 500;
  target_mc._width = 700;
};
// 创建个剪辑来承载图像
this.createEmptyMovieClip("image_mc", 100);
var image_mcl:MovieClipLoader = MovieClipLoader;
image_mcl.addListener(mclListener);
image_mcl.loadClip("http://www.helpexamples.com/flash/images/gallery1/images/pic3.jpg", image_mc);


  为加载 MP3 文件创建进度条

  创建个名为 loadSound.fla 新 Flash 文档

  在时间轴中选择第 1 帧然后在"动作"面板中键入下面代码:

//设置宽高变量
var pb_height:Number = 10;
var pb_width:Number = 100;
//在影片剪辑pb中创建进度
var pb:MovieClip = this.createEmptyMovieClip("progressBar_mc", this.getNextHighestDepth);
//在影片剪辑pb中创建进度条
pb.createEmptyMovieClip("bar_mc", pb.getNextHighestDepth);
//在影片剪辑pb中创建进度条右边直线
pb.createEmptyMovieClip("vBar_mc", pb.getNextHighestDepth);
//在影片剪辑pb中创建进度框
pb.createEmptyMovieClip("stroke_mc", pb.getNextHighestDepth);
//在影片剪辑pb中创建动态文本
pb.createTextField("pos_txt", pb.getNextHighestDepth, 0, pb_height, pb_width, 22);
//影片剪辑pb坐标设置
pb._x = 100;
pb._y = 100;
//画进度条
with (pb.bar_mc) {
  beginFill(0x00FF00);
  moveTo(0, 0);
  lineTo(pb_width, 0);
  lineTo(pb_width, pb_height);
  lineTo(0, pb_height);
  lineTo(0, 0);
  endFill;
  _xscale = 0;
}
//画进度条右边直线
with (pb.vBar_mc) {
  lineStyle(1, 0x000000);
  moveTo(0, 0);
  lineTo(0, pb_height);
}
//画进度框
with (pb.stroke_mc) {
  lineStyle(3, 0x000000);
  moveTo(0, 0);
  lineTo(pb_width, 0);
  lineTo(pb_width, pb_height);
  lineTo(0, pb_height);
  lineTo(0, 0);
}
//设置些变量
var my_erval:Number;
var my_sound:Sound = Sound;
//加载声音自动
my_sound.onLoad = function(success:Boolean) {
  (success) {
   trace("sound loaded");
  }
};
//声音播放完毕时
my_sound.onSoundComplete = function {
  clearInterval(my_erval);
  trace("Cleared erval");
}
//加载声音路径
my_sound.loadSound("http://www.helpexamples.com/flash/sound/song2.mp3", true);
//每隔定时间就下面updateProgressBar
my_erval = Interval(updateProgressBar, 100, my_sound);
function updateProgressBar(the_sound:Sound):Void {
//设置声音进度(声音已播放时间除以声音总时间乘以100)
  var pos:Number = Math.round(the_sound.position / the_sound.duration * 100);
//进度条进行缩放
  pb.bar_mc._xscale = pos;
//进度条右边直线X坐标等于进度条
  pb.vBar_mc._x = pb.bar_mc._width;
//动态文本显示进度
  pb.pos_txt.text = pos + "%";
}


  为加载视频创建进度条

  创建个名为 flvProgress.fla 新 FLA 文件

  在"库"面板("窗口">"库")中从"库"弹出菜单中选择"新建视频"

  在"视频属性"对话框中为视频元件命名并选择"视频"(由 Actionscript 控制)

  单击"确定"创建个视频对象

  将该视频对象从"库"面板拖动到舞台上以创建视频对象例子

  使视频对象在舞台上保持选中状态在属性检查器("窗口">"属性">"属性")中"例子名称"文本框中键入 my_video

  使视频例子保持选中状态在宽度文本框中键入 320在高度文本框中键入 213

  在时间轴中选择第 1 帧然后在"动作"面板中键入下面代码:

//创建 NetConnection 对象您可以将该对象和 NetStream 对象起使用来播放视频流 (FLV) 文件
var connection_nc:NetConnection = NetConnection;
对于此参数必须传递 null
connection_nc.connect(null);
创建可用于通过指定 NetConnection 对象播放 FLV 文件
var stream_ns:NetStream = NetStream(connection_nc);
//指定将在舞台上 Video 对象边界内显示视频流
my_video.attachVideo(stream_ns);
//播放外部视频 (FLV) 文件
stream_ns.play("http://www.helpexamples.com/flash/video/typing_.flv");
//创建动态文本(显示进度)
this.createTextField("loaded_txt", this.getNextHighestDepth, 10, 10, 160, 22);
//创建进度影片剪辑
this.createEmptyMovieClip("progressBar_mc", this.getNextHighestDepth);
//在进度影片剪辑中创建进度条
progressBar_mc.createEmptyMovieClip("bar_mc", progressBar_mc.getNextHighestDepth);
//画进度条
with (progressBar_mc.bar_mc) {
  beginFill(0xFF0000);
  moveTo(0, 0);
  lineTo(100, 0);
  lineTo(100, 10);
  lineTo(0, 10);
  lineTo(0, 0);
  endFill;
  _xscale = 0;
}
//在进度影片剪辑中创建进度框
progressBar_mc.createEmptyMovieClip("stroke_mc", progressBar_mc.getNextHighestDepth);
//画进度框
with (progressBar_mc.stroke_mc) {
  lineStyle(0, 0x000000);
  moveTo(0, 0);
  lineTo(100, 0);
  lineTo(100, 10);
  lineTo(0, 10);
  lineTo(0, 0);
}
//每隔定时间就下面checkBytesLoaded
var loaded_erval:Number = Interval(checkBytesLoaded, 500, stream_ns);
function checkBytesLoaded(my_ns:NetStream) {
//进度值设置
  var pctLoaded:Number = Math.round(my_ns.sLoaded / my_ns.sTotal * 100);
//动态文本显示进度
  loaded_txt.text = Math.round(my_ns.sLoaded / 1000) + " of " + Math.round(my_ns.sTotal / 1000) + " KB loaded (" + pctLoaded + "%)";
//进度条进行缩放
  progressBar_mc.bar_mc._xscale = pctLoaded;
//加载完成后清除间隔
  (pctLoaded>=100) {
   clearInterval(loaded_erval);
  }
}


0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: