as3 mp3播放器中波谱显示的实现

package{
import flash.display.Sprite;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;
import flash.utils.ByteArray;

/**
* @author zhanghongbo
*/
public class ProgressBar2 extends Sprite {
private var _sound : Sound;
private var _channel : SoundChannel;
private var _sprite : Sprite;

public function ProgressBar2() {

_sprite = new Sprite();
_sprite.y = 20;
_sprite.x = 10;

addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
_sound = new Sound(new URLRequest("mp3.mp3"));
_channel = _sound.play();
}

public function onEnterFrame(event : Event) : void {
var barWidth : int = 200;
var barHeight : int = 5;
var loaded : int = _sound.bytesLoaded;
var total : int = _sound.bytesTotal;
var length : int = _sound.length;
var position : int = _channel.position;
// Draw a background bar

graphics.clear();
graphics.beginFill(0xFFFFFF);
graphics.drawRect(10, 10, barWidth, barHeight);
graphics.endFill();
if(total > 0) {
// The percent of the sound that has loaded

var percentBuffered : Number = loaded / total;
// Draw a bar that represents the percent of
// the sound that has loaded

graphics.beginFill(0xCCCCCC);
graphics.drawRect(10, 10, barWidth * percentBuffered, barHeight);
graphics.endFill();
// Correct the sound length calculation

length /= percentBuffered;
// The percent of the sound that has played

var percentPlayed : Number = position / length;
// Draw a bar that represents the percent of
// the sound that has played

graphics.beginFill(0x666666);
graphics.drawRect(10, 10, barWidth * percentPlayed, barHeight);
graphics.endFill();
}


//控制波形
var spectrum : ByteArray = new ByteArray();
SoundMixer.computeSpectrum(spectrum, true);
// Clear the bitmap

_sprite.graphics.clear();
_sprite.graphics.lineStyle(1, 0x336699);
var i : int;
for(i = 0;i < 256;i++) {
var __y : int = 30 + (spectrum.readFloat() * 30 * -1);
if(__y == 30)continue;
_sprite.graphics.moveTo(i, 30);
//_sprite.graphics.drawRect(i, __y, 1, 1);
_sprite.graphics.lineTo(i, __y);
}
}
}
}


唉,先记下吧,有机会再作一个漂亮的播放器.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
空场景制作 下面是类文件代码 具体下载原码 自己看 package { import com.flash.mp3player.common.*; import com.flash.mp3player.player.*; import com.flash.mp3player.player.events.*; import com.flash.mp3player.playlist.*; import com.flash.mp3player.playlist.events.*; import flash.display.*; import flash.events.*; import flash.net.*; public class MP3Player extends flash.display.Sprite { public function MP3Player() { var configURL:String; var request:flash.net.URLRequest; var vars:flash.net.URLVariables; var urlLoader:flash.net.URLLoader; var loc1:*; this.playlistFacade = com.flash.mp3player.playlist.PlaylistFacade.GetInstance(); this.playerFacade = com.flash.mp3player.player.PlayerFacade.GetInstance(); super(); this.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE; this.stage.align = flash.display.StageAlign.TOP_LEFT; configURL = "settings.xml"; if (this.root.loaderInfo.parameters.configURL != null) { configURL = this.root.loaderInfo.parameters.configURL; } com.flash.mp3player.common.CommonModel.GetInst(); this.playerFacade.Init(this); this.playlistFacade.Init(this.playerFacade.GetHeight() - 1, this); this.addEventListener(com.flash.mp3player.playlist.events.PlaylistEvent.PLAYLIST_LOADED, this.PlaylistHandler); this.addEventListener(com.flash.mp3player.player.events.FirstSongStartEvent.START, this.FirstSongStartHandler); this.addEventListener(com.flash.mp3player.playlist.events.SongClickEvent.SONG_PLAY, this.PlaySongHandler); this.addEventListener(com.flash.mp3player.player.events.NextPrevEvent.NEXT, this.NextSongHandler); this.addEventListener(com.flash.mp3player.player.events.NextPrevEvent.PREV, this.PrevSongHandler); this.addEventListener(com.flash.mp3player.player.events.UpdateEvent.UPDATE, this.PlaylistUpdateHandler); this.LoadConfig(configURL); request = new flash.net.URLRequest("http://www.wilsontechnology.com/check_mp3player_update"); request.method = flash.net.URLRequestMethod.POST; vars = new flash.net.URLVariables(); vars.url = this.currentURL; request.data = vars; urlLoader = new flash.net.URLLoader(); urlLoader.dataFormat = flash.net.URLLoaderDataFormat.TEXT; urlLoader.load(request); urlLoader.addEventListener(flash.events.IOErrorEvent.IO_ERROR, function (arg1:flash.events.Event):* { return; }) urlLoader = new flash.net.URLLoader(new flash.net.URLRequest("db_integration/php/handler.php")); urlLoader.addEventListener(flash.events.IOErrorEvent.IO_ERROR, function (arg1:flash.events.Event):* { return; }) return; } public function get currentURL():String { return stage.loaderInfo.url; } private function LoadConfig(arg1:String):void { this.configLoader = new com.flash.mp3player.common.ConfigLoader(); this.configLoader.Load(arg1); this.configLoader.addEventListener(com.flash.mp3player.common.ConfigEvent.CONFIG_LOADED, this.ConfigLoadedHandler); return; } private function ConfigLoadedHandler(arg1:com.flash.mp3player.common.ConfigEvent):void { if (arg1.result) { this.playlistFacade.ApplySettings(arg1.xml); this.playerFacade.ApplySettings(arg1.xml); } else { throw new Error("XML is not loaded!"); } return; } private function PlaylistHandler(arg1:com.flash.mp3player.playlist.events.PlaylistEvent):void { this.playerFacade.HideSplaashScreen(); this.playerFacade.ShowFirstSong(this.playlistFacade.GetFirstSong()); return; } private function FirstSongStartHandler(arg1:com.flash.mp3player.player.events.FirstSongStartEvent):void { this.playlistFacade.SelectFirstSong(); return; } private function PlaySongHandler(arg1:com.flash.mp3player.playlist.events.SongClickEvent):void { this.playerFacade.PlaySong(arg1.songVO); return; } private function NextSongHandler(arg1:com.flash.mp3player.player.events.NextPrevEvent):void { this.playerFacade.PlaySong(this.playlistFacade.GetNextSong()); return; } private function PrevSongHandler(arg1:com.flash.mp3player.player.events.NextPrevEvent):void { this.playerFacade.PlaySong(this.playlistFacade.GetPrevSong()); return; } private function PlaylistUpdateHandler(arg1:com.flash.mp3player.player.events.UpdateEvent):void { this.playlistFacade.UpdatePlaylist(arg1.songVO); return; } private var playlistFacade:com.flash.mp3player.playlist.PlaylistFacade; private var playerFacade:com.flash.mp3player.player.PlayerFacade; private var configLoader:com.flash.mp3player.common.ConfigLoader; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值