zoukankan      html  css  js  c++  java
  • AS3版MP3播放器核心

    代码

    package  {
            
    import flash.media.Sound;
            
    import flash.media.SoundChannel;
            
    import flash.media.SoundLoaderContext;
            
    import flash.media.SoundMixer;

            
    public class MediaPlayerCore {
                    
    private var sound:Sound;
                    
    private var soundCh:SoundChannel;
                    
    private var soundCon:SoundLoaderContext;
                    
    private var position:Number;
                    
    private var isPlaying:Boolean;
                    
    private var isPause:Boolean;
                    
    private static var BUFFERTIME:Number = 10000;
                            
                    
    public function MediaPlayerCore()
                    {
                            isPause 
    = false;
                            isPlaying 
    = false;
                            SoundMixer.bufferTime 
    = BUFFERTIME; 
                    }
                   
    //创建一个声音对象
                     
    //@param url 媒体地址
                     
    // @param playNow 是否马上播放,默认为真      
                    public function createSound(url:String,playNow:Boolean = true):void
                    {                        
                            dispose();
                            sound 
    = new Sound();
                            sound.load(
    new URLRequest(url));
                            sound.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);             
                            
    if(playNow)
                                    play();                            
                    }
                    
    //播放
                      
    //@param offset 声音从哪开始      
                    public function play(offset:Number = 0):void
                    {
                            
    if(isPause)
                                    soundCh 
    = sound.play(position);
                            
    else
                                    soundCh 
    = sound.play(offset);
                            isPlaying 
    = true;
                            isPause 
    = false;
                    }
                   
    //暂停        
                    public function pause():void
                    {
                            
    if(isPlaying)
                            {                        
                                    position 
    = soundCh.position;
                                    stop();        
                                    isPause 
    = true;
                            }
                    }
                    
    //停止        
                    public function stop():void
                    {
                            
    if(isPlaying)
                            {
                                    soundCh.stop();
                                    isPlaying 
    = false;                                
                            }
                    }
                    
    //播放位置        
                    public function get Position():Number
                    {
                            
    if(soundCh == null)
                                    
    return 0;                    
                            
    return Math.round(soundCh.position);
                    }
                    
    //声音对象长度        
                    public function get Length():Number
                    {
                            
    if(sound == null)
                                    
    return 0;
                            
    return Math.round(sound.length*sound.bytesTotal/sound.bytesLoaded);
                    }
                    
    //声音对象总共字节        
                    public function get BytesTotal():Number
                    {
                            
    if(sound == null)
                                    
    return 0;
                            
    return sound.bytesTotal;
                    }
                    
    //声音对象加载字节        
                    public function get BytesLoaded():Number
                    {
                            
    if(sound == null)
                                    
    return 0;
                            
    return sound.bytesLoaded;
                    }
                    
    //设置缓冲时间        
                    public function set BufferTime(time:Number):void
                    {
                            SoundMixer.bufferTime
    =time;
                    }
                   
    //中途换歌的时候用的
                    private function dispose():void
                    {
                            
    if(sound == null)
                                    
    return ;
                            
    if(sound.isBuffering)
                                    sound.close();
                            stop();                 
                            sound 
    = null;
                    }
                   
    // 处理错误用
                    private function errorHandler(e:IOErrorEvent):void
                    {
                            sound.removeEventListener(IOErrorEvent.IO_ERROR,errorHandler);
                            sound 
    = null;
                    }                
            }
  • 相关阅读:
    【吐血整理】SVN命令行,Subversion的正确使用姿势,让版本控制更简单~
    【踩坑速记】MIUI系统BUG,调用系统相机拍照可能会带给你的一系列坑,将拍照适配方案进行到底!
    【福利大放送】不止是Android,Github超高影响力开源大放送,学习开发必备教科书
    【开发必备】今天我们来谈谈Android NDK动态链接库(so文件)的一些见解
    【使用教程】论Windows下必备的抓包工具Fiddler2如何安装证书(查看Https)
    【年终总结】我的2016,阅读本文大约需要一整年
    【知识必备】一文让你搞懂design设计的CoordinatorLayout和AppbarLayout联动,让Design设计更简单~
    【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
    【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
    Hive 8、Hive2 beeline 和 Hive jdbc
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1614771.html
Copyright © 2011-2022 走看看