<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()">
<mx:Script>
<![CDATA[
import mx.rpc.events.AbstractEvent;
import mx.controls.Alert;
import mx.events.SliderEvent;
import flash.media.*;
private var myTimer:Timer=new Timer(5,0);
private var mySong:Sound;
private var ss:SoundChannel;
private var location:Number;
//设定是否处于暂停状态
private var tag:Boolean=false;
private var playTag:Boolean=false;
//初始化数据
private function init():void
{
mlist.dataProvider=musicList.item;
}
private function playSound():void
{
if(playTag)ss.stop();
var playItem:String="http://team.11138.net/web/nancy/wzqskfj.mp3";
message.text="正在播放:"+mlist.selectedItem.toString();
//如果不是暂停
if(!tag)
{
var request:URLRequest=new URLRequest(playItem);
mySong=new Sound();
mySong.load(request);
ss=mySong.play();
//将播放标记设置为true,表示正在播放
playTag=true;
}else
{
ss=mySong.play(location);
playTag=true;
}
//在触发器运行时,一直在广播TimerEvent.TiMER,该事件定义处理方法,使滑块移动
myTimer.addEventListener(TimerEvent.TIMER,sliderShow);
//启动触发器
ss.addEventListener(Event.SOUND_COMPLETE,thisComplete);
myTimer.start();
}
//处理滑块时间问题
private function sliderShow(event:TimerEvent):void
{
//当前播放的位置
var position:Number=ss.position/mySong.length;
//定义滑块的数值,当前播放的字节数/总字节数
playProcess.setProgress(position,playProcess.maximum);
playProcess.label=numberFormatter.format(position*100).toString()+"%";
if(position>0.99)playProcess.label="100%";
}
//根据是否循环选项确定在所有播放曲目完成后是否循环播放
private function thisComplete(event:Event):void
{
var index:int =mlist.selectedIndex+1;
if(go.selected)
{
mlist.selectedIndex=index;
var arr:Array=musicList.item;
//播放
playSound();
//如果到达最后一首
if(index==arr.length)
{
//如果选择了重复播放
if(re.selected)
{
mlist.selectedIndex=0;
}
}
}
}
//停止播放音乐
private function stopSound():void
{
ss.stop();
}
//音量控制
private function changeVol():void
{
var transform:SoundTransform=ss.soundTransform;
transform.volume=myVol.value;
ss.soundTransform=transform;
}
]]>
</mx:Script>
<!--音乐列表数据-->
<mx:Model id="musicList" source="music.xml"></mx:Model>
<!--格式化数据-->
<mx:NumberFormatter id="numberFormatter"
precision="2"
rounding="up" />
<mx:Panel x="102" y="20" width="348" height="368" layout="absolute" title="mp3播放器">
<mx:ProgressBar x="10" y="33" id="playProcess" label="[0,100%]" minimum="0" maximum="1" labelPlacement="right" indeterminate="false" enabled="true" mode="manual" themeColor="#F20D7A"/>
<mx:Label x="10" y="10" text="Label" width="200" id="message"/>
<mx:Button x="10" y="69" label="play" click="playSound()"/>
<mx:Button x="83" y="69" label="stop" click="stopSound()"/>
<mx:Button x="156" y="69" label="Button"/>
<mx:Button x="229" y="69" label="Button"/>
<mx:List x="10" y="99" width="211" height="219" id="mlist"></mx:List>
<mx:CheckBox x="229" y="248" label="连续播放" id="go"/>
<mx:CheckBox x="229" y="278" label="循环播放" id="re"/>
<mx:VSlider x="245" y="99" height="141" maximum="1" minimum="0" id="myVol" mouseUp="changeVol()" labels="音量"/>
</mx:Panel>
</mx:Application>
分享到:
相关推荐
这个播放器是作者在练习中编写的,虽然还有一些功能没有完善,但基础功能已经齐全,能够满足基本的音乐播放需求。 描述中提到的功能包括: 1. **播放/暂停/停止**:这是任何媒体播放器的基本操作,通过ActionScript...
- 光盘内容可能包含书中示例代码、额外的练习项目和可能的Flex SDK安装包,便于读者实践操作。 5. **进阶知识**: - **Flex与 BlazeDS / LCDS**:用于在Flex应用与服务器之间进行数据交换,实现AMF(Action ...
10. **Flex的应用场景**:Flex广泛应用于企业级Web应用、数据可视化、在线多媒体播放器、游戏开发等多个领域,尤其适合需要展示复杂数据和提供高度交互体验的场景。 这个Flex电子教案(PPT)将覆盖上述知识点,并...
Flex技术是Adobe公司推出的一款RIA应用开发框架,它允许开发者使用ActionScript语言开发富互联网应用,支持通过Flash Player播放器在浏览器中运行。Flex技术的广泛支持和Flash Player的普及使得Flex成为开发RIA应用...
总之,"AIR 入门教程和官方帮助文档"是一套全面的学习资源,无论你是ActionScript开发者还是Web开发者,都能从中找到适合自己的学习路径,踏上AIR应用开发之旅。请务必仔细阅读和实践,以充分利用这些资料。
在"html-css-spotifyweb"项目中,我们可能会用到诸如`display`属性来决定元素的显示方式(如`block`、`inline-block`或`flex`),`position`属性来设置元素的定位(如`relative`、`absolute`或`fixed`),以及`grid`...
而"css"文件则是与之对应的样式表,其中包含用于定义这些元素外观和行为的CSS规则。 以下是一些关键的CSS知识点,这些知识点可能会在该资源中被用到: 1. **选择器**:CSS选择器用于选取HTML元素。例如,`.my-...
例如,可以使用`color`属性改变文本颜色,`font-family`设置字体,`margin`和`padding`调整元素间距,`display`属性用于实现流式、网格或 flex 布局,以及媒体查询(@media)实现不同设备上的适配。 在这个"online-...
例如,使用`background-color`属性改变背景色,`font-family`调整字体,`padding`和`margin`设置内边距和外边距,以及`display: flex`或`grid`实现响应式布局。 在Spotify Web的模拟中,可能还会涉及到CSS的过渡...
压缩包文件"javascript30-master"包含了整个课程的源代码和资源,供学习者参考和练习。通过实际操作这些项目,你可以跟随Wes Bos的步伐,逐步提升自己的JavaScript水平,最终能够独立完成复杂的Web应用开发。无论你...