NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 工具软件 .: Flash 与课件制作:Mp3播放

Flash 与课件制作:Mp3播放

首先在文档里面制作我们所需的元件,包括播放按钮,进度条,音量调节,暂停,等按钮。

1 、制作播放按钮

使用一个影片剪辑完成,当中里面设置两帧,一帧是用于放置播放按钮,一帧是用于显示暂停按钮,并为两帧设置标签。

一个可以切换播放或者暂停按钮的元件已经完成了。

当中,会使用到跳帧的方法切换按钮状态。所以在帧上里面写上了标签。有了这个后可以进行跳帧了,控制mc里面的元件显示。

2 、制作停止按钮

制作停止按钮的时候,只是需要画图工具,绘制一个圆角和矩形组合即可。

3 、制作可以拖放进度条

 制作这个元件的时候,需要制作两个元件MC,一个用来显示底部(深绿色),一个用来显示进度(橙色)。

 并为这橙色元件改名 controlBar,设置宽度为1。(一会用来显示进度)

完成之后,可以进行。

4、一些基本的方法:

 在as3 cookbook 里面已经有很多关于mp3玩法。功能 是大同小异。

  基本上功能有 播放,暂停,停止,拖放进度,静音,音量控制。主要的涉及到这些。

  

下面涉及到一些基本方法说明:

position 是位置记录。

播放音乐

channel=sound.play(position); 播放

停止音乐

channel.stop();停止

暂停的时候,先记录位置,再停止

position=channel.position;//记录当时的播放位置
channel.stop();

恢复播放的时候,利用这个位置Postion进行播放。

channel=sound.play(position); 播放

 5、进度条交互

进度条的拖放交互,使用的鼠标按下,鼠标移动,鼠标松开的组合方式交互。

当鼠标按下的时候,可以让进度条宽度改变,产生进度改变。

progressBar.controlBar.width=progressBar.mouseX;

在鼠标移动的时候,使用鼠标坐标改变进度条的宽度。这样子进度条就像被拖放一样,实际上是改变了控制条的宽度。

progressBar.controlBar.width=progressBar.mouseX;

鼠标松开的时候,删除移动的监听事件

stage.removeEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler);

完整代码:

一些说明:

当中一些跳转的帧,如

volumeBtn.gotoAndStop("stop"); 需要在元件里面设置帧标签。(volumeBtn 为音量控制按钮,用于静音设置)

volumeBar :音量控制条

progressBar:进度显示条

stopBtn:停止按钮

playBtn:播放按钮

  1. package    
  2. {   
  3.     import flash.display.Sprite;   
  4.     import flash.display.MovieClip;   
  5.     import flash.events.*;   
  6.     import flash.net.*;   
  7.     import flash.media.*;   
  8.     import flash.geom.*;   
  9.     import flash.display.SimpleButton;   
  10.     public class Main extends Sprite   
  11.     {   
  12.         private var position:Number=0;//播放位置   
  13.         private var channel:SoundChannel;   
  14.         private var sound:Sound;   
  15.         private var songUrl:String="1.mp3";//mp3的路径   
  16.         private var isPlay:Boolean=false;//是否播放   
  17.         public function Main()   
  18.         {   
  19.             init();   
  20.         }   
  21.         private function init():void  
  22.         {   
  23.             //加载音乐   
  24.             sound=new Sound();   
  25.             sound.addEventListener(IOErrorEvent.IO_ERROR,onErrorHandler);   
  26.             sound.addEventListener(Event.COMPLETE,onLoadSoundComplete);   
  27.             sound.load(new URLRequest(songUrl));   
  28.   
  29.             playBtn.stop();   
  30.             volumeBtn.stop();   
  31.             playBtn.buttonMode=true;   
  32.             stopBtn.buttonMode=true;   
  33.             progressBar.controlBar.mouseEnabled=false;   
  34.             volumeBar.controlBar.mouseEnabled=false;   
  35.             progressBar.buttonMode=true;   
  36.             volumeBtn.buttonMode=true;   
  37.             volumeBar.buttonMode=true;   
  38.   
  39.             volumeBar.controlBar.width=volumeBar.width;   
  40.             //trace(volumeBar.width)   
  41.             //开始按钮,停止按钮,进度条监听鼠标事件   
  42.             playBtn.addEventListener(MouseEvent.CLICK,onPlaySoundHandler);   
  43.             stopBtn.addEventListener(MouseEvent.CLICK,onStopSoundHandler);   
  44.             progressBar.addEventListener(MouseEvent.MOUSE_DOWN,onStartDragBarHandler);   
  45.             volumeBtn.addEventListener(MouseEvent.CLICK,onMuteSoundHandler);   
  46.             volumeBar.addEventListener(MouseEvent.MOUSE_DOWN,onStartDragVolomeBarHandler);   
  47.         }   
  48.         private function onErrorHandler(event:Event):void  
  49.         {   
  50.             trace("发生错误");   
  51.         }   
  52.         private function onLoadSoundComplete(event:Event):void  
  53.         {   
  54.             sound.removeEventListener(Event.COMPLETE,onLoadSoundComplete);   
  55.             channel=sound.play(position);//开始播放   
  56.             playBtn.gotoAndStop("pause");   
  57.             isPlay=true;   
  58.             addEventListener(Event.ENTER_FRAME,onProgressHandler);   
  59.         }   
  60.         private function onProgressHandler(event:Event):void  
  61.         {   
  62.             if (channel==null)return;   
  63.             if (isPlay)   
  64.             {   
  65.                 progressBar.controlBar.width=channel.position/sound.length*progressBar.width;//让进度条产生宽度变化   
  66.             }   
  67.   
  68.             if (progressBar.controlBar.width<=progressBar.width && progressBar.controlBar.width>=progressBar.width-2)   
  69.             {   
  70.                 stopSound();   
  71.             }   
  72.         }   
  73.         //播放和暂停处理   
  74.         private function onPlaySoundHandler(event:MouseEvent):void  
  75.         {   
  76.             if (playBtn.currentLabel=="start")   
  77.             {   
  78.                 if (isPlay==false)   
  79.                 {   
  80.                     isPlay=true;   
  81.                     playBtn.gotoAndStop("pause");   
  82.                     playSound();   
  83.                 }   
  84.             }   
  85.             else  
  86.             {   
  87.                 if (isPlay)   
  88.                 {   
  89.                     isPlay=false;   
  90.                     playBtn.gotoAndStop("start");   
  91.                     pauseSound();   
  92.                 }   
  93.             }   
  94.         }   
  95.         private function onStopSoundHandler(event:MouseEvent):void  
  96.         {   
  97.             stopSound();   
  98.         }   
  99.         private function onStartDragBarHandler(event:MouseEvent):void  
  100.         {   
  101.             channel.stop();   
  102.             playBtn.gotoAndStop("pause");   
  103.             progressBar.controlBar.width=progressBar.mouseX;   
  104.             event.updateAfterEvent();   
  105.             position=progressBar.controlBar.width/progressBar.width*sound.length;   
  106.                
  107.             channel=sound.play(position);   
  108.             progressBar.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler);   
  109.             stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler);   
  110.         }   
  111.         private function onMouseMoveHandler(event:MouseEvent):void  
  112.         {   
  113.             channel.stop();   
  114.             progressBar.controlBar.width=progressBar.mouseX;   
  115.   
  116.             position=progressBar.controlBar.width/progressBar.width*sound.length;   
  117.             channel=sound.play(position);   
  118.             event.updateAfterEvent();   
  119.         }   
  120.         private function onMouseUPHandler(event:MouseEvent):void  
  121.         {   
  122.             if (progressBar.hasEventListener(MouseEvent.MOUSE_MOVE))   
  123.             {   
  124.                 progressBar.removeEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler);   
  125.             }   
  126.   
  127.             if (volumeBar.hasEventListener(MouseEvent.MOUSE_MOVE))   
  128.             {   
  129.                 volumeBar.removeEventListener(MouseEvent.MOUSE_MOVE,onChangeVolumeHandler);   
  130.             }   
  131.             stage.removeEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler);   
  132.         }   
  133.         //静音处理   
  134.         private function onMuteSoundHandler(event:MouseEvent):void  
  135.         {   
  136.             if (channel==null)return;   
  137.   
  138.             if (volumeBtn.currentLabel=="start")   
  139.             {   
  140.                 volumeBtn.gotoAndStop("stop");   
  141.                 channel.soundTransform=new SoundTransform(0);   
  142.             }   
  143.             else  
  144.             {   
  145.                 volumeBtn.gotoAndStop("start");   
  146.                 channel.soundTransform=new SoundTransform(1);   
  147.             }   
  148.         }   
  149.         //拖动声音控制   
  150.         private function onStartDragVolomeBarHandler(event:MouseEvent):void  
  151.         {   
  152.             volumeBar.controlBar.width=volumeBar.mouseX;   
  153.             var volume:Number=volumeBar.controlBar.width/volumeBar.width;   
  154.             channel.soundTransform=new SoundTransform(volume);   
  155.             event.updateAfterEvent();   
  156.             volumeBar.addEventListener(MouseEvent.MOUSE_MOVE,onChangeVolumeHandler);   
  157.             stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler);   
  158.         }   
  159.            
  160.         //改音乐   
  161.         private function onChangeVolumeHandler(event:MouseEvent):void  
  162.         {   
  163.             volumeBar.controlBar.width=volumeBar.mouseX;   
  164.             trace(progressBar.controlBar.width);   
  165.             var volume:Number=volumeBar.controlBar.width/volumeBar.width;   
  166.             channel.soundTransform=new SoundTransform(volume);   
  167.             event.updateAfterEvent();   
  168.             stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUPHandler);   
  169.         }   
  170.         //停止播放音乐   
  171.         private function stopSound():void  
  172.         {   
  173.             if (channel==null)return;   
  174.             channel.stop();   
  175.             playBtn.gotoAndStop("start");   
  176.             position=0;   
  177.             isPlay=false;   
  178.             progressBar.controlBar.width=1;   
  179.   
  180.         }   
  181.         //播放音乐   
  182.         private function playSound():void  
  183.         {   
  184.             if (channel==null)return;   
  185.             channel=sound.play(position);   
  186.         }   
  187.         //暂停音乐   
  188.         private function pauseSound():void  
  189.         {   
  190.             if (channel==null)return;   
  191.             position=channel.position;//记录当时的播放位置   
  192.             channel.stop();   
  193.         }   
  194.     }   
  195. }  

这篇文章对你多有用?

相关文章

article 如何解决adobe flash player 未成功安装
   ...

  12-23-2012    Views: 1214   
article Chrome浏览器无法加载Adobe Flash Player的解决方法
Chrome浏览器的用户都遇到了“Adobe Flash...

(No rating)  8-19-2015    Views: 2276   
article 2440跑程序 Nand Flash or Nor Flash
2410和2440中有被称为“Steppingstone”的4KB内部R...

(No rating)  12-10-2012    Views: 1104   

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited