调入外部文本和加载外部mp3文件

悲酥清风 Flash1 3,514,4861阅读模式

在Flash制作时,有时候为了更灵活、方便,我们可以直接调入外部文本文件。要修改时只要修改记事本里的文本并保存,无需打开Flash源文件对其修改。

例如,我们要制作一个网络mp3播放器,网络mp3的地址和曲名我们都可以保存在一个文本中,要添加或者修改网络mp3的地址或曲名,我们只需要在这个文本进行编辑就可以了。
调入外部文本和加载外部mp3文件源文件下载

本节知识要点

1、LoadVars 类

LoadVars 类是 loadVariables() 函数的替代方法,用于在 Flash 应用程序和服务器之间传输变量。可以使用 LoadVars 类在下载时获取成功数据加载、进度指示和流数据的验证信息。

2、LoadVars.load()

LoadVars类的方法,my_lv.load(url):从指定的 URL 下载变量,分析变量数据,并将结果变量放在 my_lv 中。

3、LoadVars.onLoad

LoadVars类的事件处理函数,用法:

my_lv.onLoad = function(success) {

// 此处是您的语句

}

success 该参数指示加载操作是成功完成 (true) 还是以失败结束 (false)。如果该操作成功,my_lv 将填充为该操作所下载的变量,而这些变量将在调用此处理函数时变为可用。

4、my_str.split("delimiter", [limit])

拆分字符或字符串的方法。delimiter 拆分 my_str 所依据的字符或字符串。limit 要放入数组中的项目数。此参数是可选的。

在指定的 delimiter 参数出现的所有位置断开 String 对象,将其拆分为多个子字符串,然后以数组形式返回这些子字符串。

5、my_sound.loadSound("url", isStreaming)

方法;将 MP3 文件加载到 Sound 对象中。可以使用 isStreaming 参数指示该声音是事件声音(false)还是声音流(true)。事件声音在完全加载后才能播放;声音流在下载的同时播放。当接收的数据足以启动解压缩程序时,播放开始。

6、Sound.onSoundComplete用法:

  1. my_sound.onSoundComplete = function(){
  2.       // 此处是您的语句 
  3.      }

事件处理函数;当声音播放完时自动调用。您可以使用此处理函数在声音播放完毕后触发 SWF 文件中的事件。

例题--简单网络mp3播放器

制作思路:

1、把网络mp3的地址和对应曲名分别作为一个字符变量保存在文本文件中,把两个mp3的地址之间用“,”隔开,两个曲名之间也用“,”隔开;

2、再用loadVars类的事件处理函数my_lv.onLoad把这个文本中的两个变量调入my_lv中;

3、然后把my_lv中的两个变量利用my_str.split("delimiter", [limit])根据“,”分拆为两个数组(网络mp3的地址和曲名);

4、利用my_sound.loadSound("url", isStreaming)从网络mp3的地址的数组中加载mp3;用动态文本显示从曲名的数组中选择出的对应曲名;

5、用Sound事件处理函数my_sound.onSoundComplete,在播放完一曲后,自动加载下一曲。

注意:外部文本文件应该和加载它的swf文件在同一文件夹下,或者在同一网络下。

打开3.10.fla文件:

在第1帧上的AS脚本:

  1. System.useCodepage = true;
  2.       //使用运行播放器的操作系统的传统代码页来解释外部文本文件,避免出现乱码 
  3.  ming = [];          //定义(歌名)数组 
  4.  dizhi = [];         //定义mp3的网络地址数组 
  5.  var myLoad = new LoadVars();//定义LoadVars这个类 
  6.  myLoad.load("yinyue.txt"); //指定LoadVars载入yinyue.txt这个文件 
  7.  myLoad.onLoad = function(success) { //载入LoadVars类的事件处理函数 
  8.   if (success) {          //如果载入成功 
  9.    dizhi = this.dizhi.split(",");
  10.     //把存入myLoad的外部文本yinyue.txt中变量dizhi中以“,”分隔的部分作为数组dizhi的元素 
  11.    ming = this.geming.split(","); //同上类似 
  12.    shu = ming.length;      //用变量shu保存数组ming的长度 
  13.   }
  14.  };
  15.   mySound = new Sound();     //创建 Sound 对象。 
  16.   i = 0;             //初始化变量i 
  17.   function diaoyy(gm, mp3) {   //设置自定义函数,函数名为diaoyy 
  18.    bian = i+1+".";       //给动态文本赋值(歌曲编号) 
  19.    txt = gm;          //给动态文本赋值(歌曲名) 
  20.    mySound.stop();        //停止前面的播放 
  21.    mySound.loadSound(mp3, true);//按声音流调网络歌曲mp3 
  22.    mySound.start();      //开始播放调入的网络歌曲mp3 
  23.    mySound.onSoundComplete = function() { //当音乐播放完毕时执行下面的命令 
  24.      i++;
  25.      if (i == shu) {        //变量i等于歌曲总数时 
  26.       i = 0;
  27.      }
  28.     diaoyy(ming[i], dizhi[i]);  //调自定义函数(歌曲名,网络地址) 
  29.    };
  30.   }

在“播放”按扭上的AS脚本:

  1. on (release) {
  2.   diaoyy(ming[i], dizhi[i]);  //调自定义函数(歌曲名,网络地址) 
  3.  }

作业

1、由3.9.fla文件上其它几个按扭添加脚本(根据按扭名称),使这个播放器增加随机播放与顺序播放;播放上一曲或者下一曲;暂停和停止功能,如下图。

2、由3.9.fla文件进行改动,使播放器有下图所具有的功能.

悲酥清风
  • 本文由 发表于 2015年4月18日 01:07:44
评论  1  访客  0  引用  1

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定