Flash加载外部文件创建进度条3种方法
程序员文章站
2022-07-11 10:15:12
加载外部文件的进度条(看帮助文档整理),只适合那些不愿看帮助文档的新手。我只不过加了一些注释。
为加载图像文件或 SWF 文件创建进度条
创建一个名为 loadImage.fla 的新 Flas... 08-10-07...
加载外部文件的进度条(看帮助文档整理),只适合那些不愿看帮助文档的新手。我只不过加了一些注释。
为加载图像文件或 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 = new object();
//开始加载时进度条缩放为0
mcllistener.onloadstart = function(target_mc:movieclip) {
progressbar_mc.bar_mc._xscale = 0;
};
//在加载过程中进度条进行缩放
mcllistener.onloadprogress = function(target_mc:movieclip, bytesloaded:number, bytestotal:number) {
progressbar_mc.bar_mc._xscale = math.round(bytesloaded/bytestotal*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 = new 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_interval:number;
var my_sound:sound = new sound();
//加载声音自动调用
my_sound.onload = function(success:boolean) {
if (success) {
trace("sound loaded");
}
};
//声音播放完毕时调用
my_sound.onsoundcomplete = function() {
clearinterval(my_interval);
trace("cleared interval");
}
//加载声音路径
my_sound.loadsound("http://www.helpexamples.com/flash/sound/song2.mp3", true);
//每隔一定时间就调用下面的updateprogressbar函数
my_interval = setinterval(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 = new netconnection();
对于此参数,必须传递 null
connection_nc.connect(null);
创建可用于通过指定的 netconnection 对象播放 flv 文件的流
var stream_ns:netstream = new netstream(connection_nc);
//指定将在舞台上的 video 对象的边界内显示的视频流
my_video.attachvideo(stream_ns);
//播放外部视频 (flv) 文件
stream_ns.play("http://www.helpexamples.com/flash/video/typing_short.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_interval:number = setinterval(checkbytesloaded, 500, stream_ns);
function checkbytesloaded(my_ns:netstream) {
//进度值设置
var pctloaded:number = math.round(my_ns.bytesloaded / my_ns.bytestotal * 100);
//动态文本显示进度
loaded_txt.text = math.round(my_ns.bytesloaded / 1000) " of " math.round(my_ns.bytestotal / 1000) " kb loaded (" pctloaded "%)";
//进度条进行缩放
progressbar_mc.bar_mc._xscale = pctloaded;
//加载完成后清除间隔
if (pctloaded>=100) {
clearinterval(loaded_interval);
}
}
为加载图像文件或 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 = new object();
//开始加载时进度条缩放为0
mcllistener.onloadstart = function(target_mc:movieclip) {
progressbar_mc.bar_mc._xscale = 0;
};
//在加载过程中进度条进行缩放
mcllistener.onloadprogress = function(target_mc:movieclip, bytesloaded:number, bytestotal:number) {
progressbar_mc.bar_mc._xscale = math.round(bytesloaded/bytestotal*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 = new 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_interval:number;
var my_sound:sound = new sound();
//加载声音自动调用
my_sound.onload = function(success:boolean) {
if (success) {
trace("sound loaded");
}
};
//声音播放完毕时调用
my_sound.onsoundcomplete = function() {
clearinterval(my_interval);
trace("cleared interval");
}
//加载声音路径
my_sound.loadsound("http://www.helpexamples.com/flash/sound/song2.mp3", true);
//每隔一定时间就调用下面的updateprogressbar函数
my_interval = setinterval(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 = new netconnection();
对于此参数,必须传递 null
connection_nc.connect(null);
创建可用于通过指定的 netconnection 对象播放 flv 文件的流
var stream_ns:netstream = new netstream(connection_nc);
//指定将在舞台上的 video 对象的边界内显示的视频流
my_video.attachvideo(stream_ns);
//播放外部视频 (flv) 文件
stream_ns.play("http://www.helpexamples.com/flash/video/typing_short.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_interval:number = setinterval(checkbytesloaded, 500, stream_ns);
function checkbytesloaded(my_ns:netstream) {
//进度值设置
var pctloaded:number = math.round(my_ns.bytesloaded / my_ns.bytestotal * 100);
//动态文本显示进度
loaded_txt.text = math.round(my_ns.bytesloaded / 1000) " of " math.round(my_ns.bytestotal / 1000) " kb loaded (" pctloaded "%)";
//进度条进行缩放
progressbar_mc.bar_mc._xscale = pctloaded;
//加载完成后清除间隔
if (pctloaded>=100) {
clearinterval(loaded_interval);
}
}
上一篇: 蜘蛛侠来给我们上课了
下一篇: 喝多了憋的急