FLex 编写网页MP3播放器

随着互联网的快速发展,HTML5显得越来越强势,个人认为,在短时间内Flex还是具有先天独厚的优势,就比如写个网页播放器,几行代码就可以搞定。现在给大家分享一下源码,可供大家学习和参考。

演示:应用到网站后的效果(请使用IE)

原码效果

Flex源码:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               xmlns:bridge="bridge.*"
                width="379"  height="118" initialize="application1_initializeHandler(event)">
    <fx:Declarations>
        <bridge:FABridge/>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.core.FlexGlobals;
            import mx.events.FlexEvent;  
            
            private var snd:Sound;
            private var channel:SoundChannel;
            private var trans:SoundTransform;
            private var playStatus:Number = 0;
            private var playPosition:Number = 0;
            
            [Bindable]
            private var sonname:String="Hold不住的爱";
            
            private var musicurl:String="http://localhost:700/ohyewang.mp3";
            
            private var autostart:String="0";
            
            var clock:Timer = new Timer(100, 100000);//每0.1秒更新一次
            protected function application1_initializeHandler(event:FlexEvent):void
            {
                var app:Application=this;
                
                try
                {
                    if(app.parameters.hasOwnProperty('musicurl'))
                    {
                        sonname=app.parameters.sonname;
                        musicurl=app.parameters.musicurl;
                        autostart=app.parameters.autostart;
                    }
                }
                catch(e)
                {
                    
                }
                
                var copyrightMenuItem:ContextMenuItem = new ContextMenuItem("关于ohyewang.com", true, true);
                copyrightMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,function(e:ContextMenuEvent){
                    navigateToURL(new URLRequest("http://www.ohyewang.com"), "_blank"); 
                });
                var contextMenuCustomItems:Array = FlexGlobals.topLevelApplication.contextMenu.customItems;
                contextMenuCustomItems.push(copyrightMenuItem);
                
                flash.external.ExternalInterface.addCallback("play",play);//添加JS回调函数
                
                flash.external.ExternalInterface.call("javascriptMethod");//调用JS方法
                
                if(autostart=="1")
                {
                    play();//自动播放
                }
            }
            
            protected function play(){
                // 标示当前播放状态,0是未加载,1是播放,2是暂停
                if(playStatus==0 || playStatus==1)
                {
                    if(playStatus==0)
                    {
                        snd = new Sound(new URLRequest(musicurl));
                        trans = new SoundTransform();
                        trans.volume = hsVolume.value/hsVolume.maximum;
                        
                    }
                    
                    playButton.label = "暂停";
                    channel = snd.play(playPosition);
                    playStatus = 2;
                }
                else if(playStatus==2)
                {
                    playButton.label = "播放";
                    channel.stop();
                    playStatus = 1;
                }
                
                clock.start();
                clock.addEventListener(TimerEvent.TIMER,showTime);
            }
            
            protected function button1_clickHandler(event:MouseEvent):void
            {
                play();
            }
            
            protected function showTime(event:Event):void{
                playPosition = channel.position;
                var current:String=formatDate(channel.position);
                var total:String=formatDate(snd.length);
                timeLabel.text =current + " / " +total ;
                hsProgress.value = channel.position/snd.length * hsProgress.maximum;
             
                if(current==total)
                {
                    playPosition=0;
                    hsProgress.value=0;
                    channel.stop();
                    channel = snd.play(hsProgress.value/hsProgress.maximum * snd.length);
                }
            }
            
     
            protected function hsProgress_changeEndHandler(event:FlexEvent):void
            {
                channel.stop();
                channel = snd.play(hsProgress.value/hsProgress.maximum * snd.length);
                
                timeLabel.text = formatDate(channel.position) + " / " + formatDate(snd.length);
            }
            
            protected function hsVolume_changeEndHandler(event:FlexEvent):void
            {
                trans.volume = hsVolume.value/hsVolume.maximum;
                channel.soundTransform = trans;
            }
            
            // 把毫秒格式化为时间
            protected function formatDate(num:Number):String
            {
                var total:int = int(num / 1000);
                var second:int = total%60;
                total = (total-second)/60;
                var minute:int = total%60;
                total = (total-minute)/60;
                var hour:int = total;
                
                var returnValue:String = "";
                if(hour!=0) returnValue = String(hour) + ":";
                if(minute<10) returnValue += "0";
                returnValue += String(minute) + ":";
                if(second<10) returnValue += "0";
                returnValue += String(second);
                return returnValue;
            }
        
            // 把播放进度绑定到播放时间的标签上,以及调整进度的组件上
            protected function application1_enterFrameHandler(event:Event):void
            {
                timeLabel.text = formatDate(channel.position) + " / " + formatDate(snd.length);
                playPosition = channel.position;
                hsProgress.value = channel.position/snd.length * hsProgress.maximum;
            }
            
        
            
        ]]>
    </fx:Script>
    <s:BorderContainer x="3" y="6" width="369" height="108">
        <s:Label x="83" y="47" text="进度:" width="45"/>
        <s:HSlider id="hsProgress" x="135" y="48" width="221" changeEnd="hsProgress_changeEndHandler(event)" maximum="100" showDataTip="false"/>
        <s:Label x="83" y="67" text="音量:" width="45"/>
        <s:HSlider id="hsVolume" x="136" y="71" width="221" changeEnd="hsVolume_changeEndHandler(event)" value="5" maximum="10" showDataTip="false"/>
        <s:Button id="playButton" x="12" y="53" label="播放" click="button1_clickHandler(event)" width="55"/>
        <s:Label id="timeLabel" x="139" y="12" text="00:00 / 00:00" />
        <s:Label x="83" y="12" text="播放进度:"/>
        <s:Label x="83" y="88" width="274" color="#BDB9B9" text="{sonname}" textAlign="center"
                 verticalAlign="middle"/>
        
    </s:BorderContainer>  
</s:Application>

目录结构:

Html源码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <!-- 
    Smart developers always View Source. 
    
    This application was built using Adobe Flex, an open source framework
    for building rich Internet applications that get delivered via the
    Flash Player or to desktops via Adobe AIR. 
    
    Learn more about Flex at http://flex.org 
    // -->
    <head>
        <title></title>
        <meta name="google" value="notranslate" />         
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <!-- Include CSS to eliminate any default margins/padding and set the height of the html element and 
             the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as 
             the percentage of the height of its parent container, which has to be set explicitly.  Fix for
             Firefox 3.6 focus border issues.  Initially, don't display flashContent div so it won't show 
             if JavaScript disabled.
        -->
        <style type="text/css" media="screen"> 
            html, body  { height:100%; }
            body { margin:0; padding:0; overflow:auto; text-align:center; 
                   background-color: #ffffff; }   
            object:focus { outline:none; }
            #flashContent { display:none; }
        </style>
        
        <!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
        <!-- BEGIN Browser History required section -->
        <link rel="stylesheet" type="text/css" href="history/history.css" />
        <script type="text/javascript" src="history/history.js"></script>
        <!-- END Browser History required section -->  
            
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
            var swfVersionStr = "11.1.0";
            // To use express install, set to playerProductInstall.swf, otherwise the empty string. 
            var xiSwfUrlStr = "playerProductInstall.swf";
           var flashvars = {};
          flashvars.sonname = "Hold不住的爱";//设置歌曲名称
           flashvars.musicurl = "http://localhost:700/ohyewang.mp3";//歌曲地址
           flashvars.autostart = "1";//启用自动播放

            var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            var attributes = {};
            attributes.id = "EmbedMusicFlex";
            attributes.name = "EmbedMusicFlex";
            attributes.align = "middle";
            swfobject.embedSWF(
                "EmbedMusicFlex.swf", "flashContent", 
                "379", "118", 
                swfVersionStr, xiSwfUrlStr, 
                flashvars, params, attributes);
            // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
            swfobject.createCSS("#flashContent", "display:block;text-align:left;");
        </script>
    </head>
    <body>
        <!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough 
             JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
             when JavaScript is disabled.
        -->
        <div id="flashContent">
            <p>
                To view this page ensure that Adobe Flash Player version 
                11.1.0 or greater is installed. 
            </p>
            <script type="text/javascript"> 
                var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://"); 
                document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='" 
                                + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" ); 
            </script> 
        </div>
        
        <noscript>
            <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="379" height="118" id="EmbedMusicFlex">
                <param name="movie" value="EmbedMusicFlex.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="allowScriptAccess" value="sameDomain" />
                <param name="allowFullScreen" value="true" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="EmbedMusicFlex.swf" width="379" height="118">
                    <param name="quality" value="high" />
                    <param name="bgcolor" value="#ffffff" />
                    <param name="allowScriptAccess" value="sameDomain" />
                    <param name="allowFullScreen" value="true" />
                <!--<![endif]-->
                <!--[if gte IE 6]>-->
                    <p> 
                        Either scripts and active content are not permitted to run or Adobe Flash Player version
                        11.1.0 or greater is not installed.
                    </p>
                <!--<![endif]-->
                    <a href="http://www.adobe.com/go/getflashplayer">
                        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
                    </a>
                <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
            </object>
        </noscript>     
   </body>
</html>

FLex 编写网页MP3播放器相关推荐

  1. 网页MP3播放器代码

    如果你也想往自己的博客里,网页里加入音乐播放器,只要复制下面的网页音乐播放器代码,做适当的修改就可以啦!有很多播放器可以选择,不要挑花眼哦! 中true或1表示自动播放,false或0表示手动播放 l ...

  2. html网页转换swf格式,[转]html网页 swf播放器使用代码

    可加装广告的swf播放器JS代码 加载flash动画前可以加载代码,设定广告显示秒数这些,还有些小bug,等有空了修复好法上来给大家​​ 1. [代码][Java]代码/p> (原创)jQuer ...

  3. java仿qq空间音乐播放_使用JS改造的简单网页音乐播放器,仿QQ空间样式

    最近有好多东西要发表分享给大家,但由于时间问题,越多反而显得越乱,都不知道从何下手,该做的事情还有很多,最近整博客,又整得有点不兼容了,在想抽个时间修复它,可能时间要比较长,因为无从下手,必须一个一个 ...

  4. GStreamer 编写一个简单的MP3播放器

    本文介绍如何使用GStreamer 编写一个简单的MP3播放器. 1,需要使用mad解码插件,因此需要先安装gstreamer0.10-plugins-ugly 2,编写mp3播放器 下面来看看如何利 ...

  5. 远程WEB控制MP3播放器设计(基于mini2440)

    网上有很多 基于mini2440的MP3播放器设计的资料,多是按键控制,这里博主做了些轻微改动,利用远程WEB来控制MP3播放,具体怎么实现,下面会给出,大家先看看效果: WEB界面: 后台运行: 因 ...

  6. HTML:给自己设计一个简单的专属网页音乐播放器

    Hello,大家好,我是wangzirui32,今天我们来学习如何给自己设计一个简单的网页音乐播放器. 开始学习吧! 学习目录 1. 项目架构 2. player.html 编写 3. style.c ...

  7. java mp3播放器 无界面

    一.服务器端: 最近没有系统学习的计划,看了开源的YOYOPlayer(一个相当强大的播放器软件,基于java编写),心里痒痒,比较肤浅的学习下javasound. javasound是比较小巧的底层 ...

  8. java mp3播放器 ×××面

    一.服务器端: 最近没有系统学习的计划,看了开源的YOYOPlayer(一个相当强大的播放器软件,基于java编写),心里痒痒,比较肤浅的学习下javasound. javasound是比较小巧的底层 ...

  9. 我的Android进阶之旅------Android MediaPlayer播放网络音频的实例--网络mp3播放器

    上一篇写了个简单的MP3播放器 ,这次写一个可以播放网络音频资源的播放器 本实例可以实现音乐播放器除了来电的时候会暂停播放,通话结束后恢复播放外,打开其他的Activity都可以继续播放音乐,享受一边 ...

最新文章

  1. JavaScript继承详解(四)
  2. python教程app下载地址_python教程
  3. python免费教学视频教程-Python免费教程_Python免费视频教程大全_易玩网
  4. 签约 计算机英语,签约协议时的英文表达
  5. velocity自定义函数_velocity基本语法和总结
  6. Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解
  7. AOP——基于AspectJ的注解来实现AOP操作
  8. php fping,【Linux 命令】fping ping 包间隔时间详解
  9. SAP License:最近解决的一些SAP问题
  10. Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected
  11. MYSQL 二进制还原
  12. mysql升级:rpm包安装升级
  13. 富文本点击事件-TTTAttributedLabel和YYtext的不同用法
  14. 抽奖小程序可以用html写吗,jquery 抽奖小程序实现代码
  15. tableau 日周月筛选器_自定义日期格式
  16. Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19
  17. 调研内容(算法相关--MDP)
  18. “异军突起”的蔷薇灵动或成云安全领域“独角兽”?
  19. 同为120Hz LTPO屏,OPPO Find X3高性价比更吸睛
  20. 从零开始学前端 - 16. JS对象Object介绍及常用方法

热门文章

  1. small用于不连续数组_太神奇了,large和small这两个最值函数居然可以这样使用!...
  2. unity-builtin实现体积光
  3. python爬取推特的详细教程_如何利用 Twitter 开放者平台爬取 Twitter 数据?
  4. 千寻和省cors精度对比_千寻位置的高精度定位服务与GPS定位有什么不同?
  5. 在PowerBI中导入JSON文件
  6. 36. 有效的数独(javascript)36. Valid Sudoku
  7. xDSL:数字用户线路技术(DSL、IDSL、ADSL、HDSL、SDSL、VDSL、G.Lite)--网络大典
  8. base64转图片,浏览器前面加
  9. 如何实现flex栅格布局及合并单元格
  10. QuickJS 快速入门 (QuickJS QuickStart)