- 博客(3)
- 资源 (16)
- 收藏
- 关注
AS3.0歌词同步频谱原码
package 
{
	import flash.display.Sprite;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.media.SoundMixer;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;
	import flash.utils.ByteArray;
	import flash.system.System;
	import flash.net.*;
	import flash.ui.*;
	import flash.system.*;
	public class Main extends Sprite
	{
		private var spectrum:Sprite;
		private var sound:Sound;
		private var schannel:SoundChannel;
		private var lrcLoader:URLLoader;
		private var info_txt:TextField;
		private var id3_txt:TextField;
		private var byteArray:ByteArray;
		private var lrcArray:Array;
		public function Main()
		{
			init();
		}
		////////////////////////////////////////////////////////////////////
		////// 初始化 //////
		//////////////////////////////////////////////////////////////////
		private function init():void
		{
			System.useCodePage = true;
			Security.allowDomain("*");
			
			
			sound = new Sound  ;
			sound.load(new URLRequest("醉酒歌.mp3"));
			schannel = sound.play();
			//////////////////////////////////////////////////
			lrcLoader = new URLLoader  ;
			lrcLoader.load(new URLRequest("《醉酒歌》.lrc"));
			/////////////////////////////////////////////////;
			info_txt = new TextField  ;
			info_txt.height = 20;
			info_txt.y = 100;
			info_txt.selectable = false;
			info_txt.background = true;
			info_txt.backgroundColor = 0xFF9900;
			info_txt.defaultTextFormat = getFormat();
			this.addChild(info_txt);
			id3_txt = new TextField  ;
			id3_txt.width = 300;
			id3_txt.selectable = false;
			id3_txt.defaultTextFormat = getFormat();
			this.addChild(id3_txt);
			/////////////////////////////////////////////////;
			spectrum = new Sprite  ;
			spectrum.x = 10;
			spectrum.y = 250;
			this.addChild(spectrum);
			////////////////////////////////////////////////;
			byteArray = new ByteArray  ;
			lrcArray = new Array  ;
			addEvents();
		}
		////////////////////////////////////////////////////////////////////
		////// 设置文本格式 //////
		//////////////////////////////////////////////////////////////////
		private function getFormat():TextFormat
		{
			var textFmt:TextFormat = new TextFormat  ;
			textFmt.align = TextFieldAutoSize.LEFT;
			textFmt.font = "Arial";
			textFmt.color = 0x000000;
			textFmt.size = 14;
			return textFmt;
		}
		////////////////////////////////////////////////////////////////////
		////// 添加事件 //////
		//////////////////////////////////////////////////////////////////
		private function addEvents():void
		{
			sound.addEventListener(Event.SOUND_COMPLETE,soundCompleteHandler);
			sound.addEventListener(Event.ID3,id3InfoHandler);
			lrcLoader.addEventListener(Event.COMPLETE,loadCompleteHandler);
			stage.addEventListener(Event.ENTER_FRAME,soundPlayingHandler);
			this.addEventListener(Event.ENTER_FRAME,creatSpectrum);
		}
		private function soundCompleteHandler(event:Event):void
		{
			stage.removeEventListener(Event.ENTER_FRAME,soundPlayingHandler);
			this.removeEventListener(Event.ENTER_FRAME,creatSpectrum);
		}
		private function id3InfoHandler(event:Event):void
		{
			var tar:Sound = event.target as Sound;
			id3_txt.text = "歌名:" + tar.id3.songName + "\n" + "歌手:" + tar.id3.artist + "\n" + "专辑:" + tar.id3.album;
		}
		////////////////////////////////////////////////////////////////////
		////// 读取歌词信息 //////
		//////////////////////////////////////////////////////////////////
		private function loadCompleteHandler(event:Event):void
		{
			var lrclist:String = event.target.data;
			var lrcArr:Array = lrclist.split("\n");
			var reg:RegExp = /\[[0-5][0-9]:[0-5][0-9].[0-9][0-9]\]/g;
			for (var i:int = 0; i < lrcArr.length; i++)
			{
				var lrcStr:String = lrcArr[i];
				var len:int = lrcStr.match(reg).length;
				var timeArr:Array = lrcStr.match(reg);
				var lyrics:String = lrcStr.substr((len * 10));
				for (var t:int = 0; t < timeArr.length; t++)
				{
					var timeS:String = timeArr[t];
					var timeN:Number = (((Number(timeS.substr(1,2)) * 60) + Number(timeS.substr(4,5))) * 1000);
					var object:Object = new Object  ;
					object.timer = timeN;
					object.lrc = lyrics;
					lrcArray.push(object);
				}
			}
			lrcArray.sort(compare);
		}
		////////////////////////////////////////////////////////////////////;
		////// 歌词歌曲同步 //////
		///////////////////////////////////////////////////////////////////
		private function soundPlayingHandler(event:Event):void
		{
			for (var i:int = 1; i < lrcArray.length; i++)
			{
				if (schannel.position < lrcArray[i].timer)
				{
					info_txt.text = "歌词:" + lrcArray[i - 1].lrc;
					break;
				}
				info_txt.text = "end:" + lrcArray[lrcArray.length - 1].lrc;
			}
			info_txt.width = info_txt.textWidth + 5;
		}
		////////////////////////////////////////////////////////////////////
		////// 创建频谱 //////
		///////////////////////////////////////////////////////////////////
		private function creatSpectrum(event:Event):void
		{
			SoundMixer.computeSpectrum(byteArray,true);
			spectrum.graphics.clear();
			spectrum.graphics.lineStyle(0,0x666666);
			spectrum.graphics.beginFill(0x666666);
			spectrum.graphics.moveTo(0,0);
			for (var i:int = 0; i < 256; i +=  5)
			{
				var n:Number = byteArray.readFloat() * 100;
				spectrum.graphics.drawRect(i,0,3, -  n);
			}
		}
		////////////////////////////////////////////////////////////////////;
		////// 比较函数 //////
		///////////////////////////////////////////////////////////////////
		private function compare(pareA:Object,pareB:Object):int
		{
			if (pareA.timer > pareB.timer)
			{
				return 1;
			}
			if (pareA.timer < pareB.timer)
			{
				return -1;
			}
			return 0;
		}
	}
}
        2016-03-07
任意拖动的视频播放器
任意拖动的视频播放器
//======================================================
//===============VIDEO SETUP=====视频设置============
//======================================================
//the playlist address
_root.playlist == undefined ? playlist="http://yun.365.sh/s/TY2gc2.swf" : playlist=_root.playlist;
// stage variables
Stage.showMenu = false;
Stage.scaleMode = "noScale";
stop();
// video Stream variables
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
// buffer video
ns.setBufferTime(5);
ns.onStatus = function(obj) {
	if (obj.code == "NetStream.Buffer.Full") {
		bufferClip._visible = false;
	}
	if(obj.code == "NetStream.Buffer.Empty") {
		bufferClip._visible = true;
	}
	
};
var myVolume:Number = 0;
var current_song:Number = 1;
// control variables
var scr = _root.main.controlBar.scrubber;
var pr = scr.progres;
var ld = scr.loader;
var cb = _root.main.controlBar;
var swidth = scr.back._width-37;
//297-37
var pstart = -285;
//-261
var dur:Number;
// the percentage of the video loaded 
var lprog:Number = 0;
var sign:String = "first";
main.theVideo.attachVideo(ns);
// parsing the playlist xml files
data_xml = new XML();
data_xml.ignoreWhite = true;
data_xml.onLoad = loadData;
data_xml.load(playlist);
var aPath = new Array();
function loadData(success) {
	if (success) {
		// getting all titles and filenames 
		songTitel = new Array();
		audioTracks = new Array();
		audioTracks.shuffle();
		audioTracks = this.firstChild.childNodes;
		song_total = audioTracks.length;
		for (var i = 0; i<song_total; i++) {
			aPath.push(audioTracks[i].attributes.path);
			songTitel.push(audioTracks[i].attributes.title);
			// buiding playlist buttons
			bot.listContentMc.playlist.btn.duplicateMovieClip("btn"+i, i);
			bot.listContentMc.playlist["btn"+i]._y = bot.listContentMc.playlist.btn._y+i*int(bot.listContentMc.playlist.btn._height)+i;
			bot.listContentMc.playlist["btn"+i].txt = checkDigits(i+1)+". "+songTitel[i];
			bot.listContentMc.playlist["btn"+i].hit.onPress = function() {
				listClick(this._parent.getDepth()+1);
			};
		}
		//checking autostart mode
		autoStart = this.firstChild.attributes.autoStart;
		if (autoStart == "yes") {
			playtime();
		} else if (autoStart == "no") {
			main.controlBar.scrubber.perload.text = "OK";
			cb.plabel.play();			
		} else if (autoStart == "random") {
			current_song = random(song_total)+1;
			playtime();
		} else {
			current_song = int(this.firstChild.attributes.autoStart);
			playtime();
		}
	}
	// done ! all loaded succesfully. purging trash   
	delete audioTracks;
	delete data_xml;
}
//==========================================================
//===============VIDEO CONTROLS=====视频控件=================
//==========================================================
function playtime() {
	bufferClip._visible = false;
	AudioPath = aPath[current_song-1];
	main.welcome._visible = false;
	ns.play(AudioPath);
	cb.plabel.gotoAndStop(1);
}
// get the length of the Movie
ns.onMetaData = function(obj) {
	dur = obj.duration;
};
_root.onEnterFrame = videoUpdate;
// the state of the video loading...
function videoUpdate() {
	var prog = ns.time/dur;
	main.welcome.title.text = "<< " + songTitel[current_song-1] + ">> is preparing . ";
	lprog = ns.bytesLoaded/ns.bytesTotal;
	main.controlBar.scrubber.loaded._width = lprog*290;
	pr._x = -285+(swidth*prog);
	ns.onStatus = function(infoObject:Object) {
		if(infoObject.code == "NetStream.Play.Start") {
			sign = "started";			
		} else if(infoObject.code == "NetStream.Play.Stop") {
			sign = "closed";
			if (autoStart == "random") {
				current_song = random(song_total)+1;
			} else {
				current_song == song_total ? current_song=1 : current_song++;
			}
			cb.plabel.play();
		}
	};
	if(sign == "started") {
		main.welcome._visible = false;
		bot.currentPlay.text = checkDigits(current_song)+". "+songTitel[current_song-1];
		main.controlBar.scrubber.perload.text = Math.round(lprog*100)+"%";
		hadPlayed.text = Math.floor(ns.time/60)+" m "+Math.round(ns.time%60)+" s  "+Math.floor(prog*100)+" %";
		timetext.text = Math.floor(dur/60)+" m "+Math.round(dur%60)+" s";
	} else if(sign == "closed") {
		main.controlBar.scrubber.perload.text = "Closed";
		hadPlayed.text = "Previous one closed";
		main.welcome._visible = true;
		timetext.text = "none loaded";
	} else if(sign == "first") {
		main.controlBar.scrubber.perload.text = "OK";
		timetext.text = "默认的视频";//default Vedio OK
		hadPlayed.text = "玩家可以";	//Player OK
	}
}
function listClick(prm) {
	delete pausepos;
	current_song = prm;
	ns.stop();
	playtime();
	sign = "select";
}
// list scroller
bot.listContentMc.list_bg.onEnterFrame = function() {
	if (this.hitTest(_root._xmouse, _root._ymouse) == true && this._parent.playlist._height>this._height) {
		ymin = this._y+this._height-this._parent.playlist._height;
		ymax = this._y+3;
		conv = (this._ymouse-15)*1.3/this._height;
		conv>1 ? conv=1 : null;
		conv<0 ? conv=0 : null;
		this._parent.playlist.easeY(ymax-conv*(ymax-ymin));
	}
};
bot.listContentMc.playlist.setMask(bot.listContentMc.list_bg);
MovieClip.prototype.easeY = function(t) {
	this.onEnterFrame = function() {
		this._y = int(t-(t-this._y)/1.5);
		if (this._y>t-1 && this._y<t+1) {
			delete this.onEnterFrame;
		}
	};
};
// prefixing a 0 to the time
function checkDigits(toCheck) {
	return (toCheck<10) ? toCheck="0"+toCheck : toCheck;
}
// end playlist
cb.replayer.onRollOver = function() {
	showTip("Replay Video");
};
cb.replayer.onRollOut = cb.replayer.onPress=function () {
	removeTip();
};
cb.replayer.onRelease = function() {
	ns.seek(0);
	ns.pause(false);
	cb.plabel.gotoAndStop(1);
};
var rewInt;
cb.rewinder.onRollOver = function() {
	showTip("Rewind");
};
cb.rewinder.onRollOut = function() {
	removeTip();
};
cb.rewinder.onPress = function() {
	rewInt = setInterval(rewind, 200);
	ns.pause(true);
	removeTip();
};
cb.rewinder.onRelease = cb.rewinder.onReleaseOutside=function () {
	clearInterval(rewInt);
	ns.pause(false);
};
function rewind() {
	ns.seek(ns.time-30);
	if (ns.time == 0) {
		clearInterval(rewInt);
		ns.pause(false);
	}
	// end if  
}
cb.player.onRollOver = function() {
	showTip("Play / Pause");
};
cb.player.onRollOut = cb.player.onPress=function () {
	removeTip();
};
cb.player.onRelease = function() {
	if(sign == "closed" || sign == "first" || sign == "select") {
		playtime();
	} else
		ns.pause();
	cb.plabel.play();
};
cb.stopper.onRollOver = function() {
	showTip("Stop Video");
};
cb.stopper.onRollOut = cb.stopper.onPress=function () {
	removeTip();
};
cb.stopper.onRelease = function() {
	ns.seek(0);
	ns.pause(true);
	cb.plabel.gotoAndStop(2);
	removeTip();
};
var ffInt;
cb.fforwarder.onRollOver = function() {
	showTip("Fast Forward");
};
cb.fforwarder.onRollOut = function() {
	removeTip();
};
cb.fforwarder.onPress = function() {
	removeTip();
	ffInt = setInterval(ff, 200);
};
cb.fforwarder.onRelease = cb.fforwarder.onReleaseOutside=function () {
	clearInterval(ffInt);
	/*if(ns.time / dur > .95) {
	ns.seek(0);
	ns.pause(false);
	}*/
};
function ff() {
	if (ns.time/dur<.95) {
		ns.seek(ns.time+1);
	} else {
		clearInterval(ffInt);
	}
}
pr.scrubba.onPress = function() {
	//ns.pause(true);
	_root.onEnterFrame = scrubba;
	pr.startDrag(false, -285, pr._y, -25, pr._y);
};
pr.scrubba.onRelease = pr.scrubba.onReleaseOutside=function () {
	_root.onEnterFrame = videoUpdate;
	//ns.pause(false);
	pr.stopDrag();
	removeTip();
};
function scrubba() {
	var p = (pr._x-pstart)/swidth;
	if (p<=lprog) {
		ns.seek(p*dur);
	} else {
		ns.seek(lprog);
	}
	main.tooltip.datext.text = Math.floor(p*100)+" % 处理";//processing
	main.tooltip._x = Math.round(main._xmouse);
	main.tooltip._y = Math.round(main._ymouse);
	main.tooltip._visible = true;
}
main.controlBar.scrubber.back.onRelease = controlBar.scrubber.back.onReleaseOutside=function () {
	var p = (this._xmouse-37)/swidth;
	if (p<=lprog) {
		ns.seek(p*dur);
	} else {
		ns.seek(lprog);
	}
};
//======================================================
//==============SOUND CONTROL=======声音控制=============
//======================================================
_root.createEmptyMovieClip("vidsound", _root.getNextHighestDepth());
vidsound.attachAudio(ns);
var sou:Sound = new Sound(vidsound);
sou.setVolume(75);
var startxs = main.controlBar.vol._x;
main.controlBar.vol._x = startxs+(70*.75);
main.controlBar.vol.onPress = function() {
	this.startDrag(false, startxs+3, this._y, startxs+58, this._y);
	main.tooltip._x = Math.round(main._xmouse);
	main.tooltip._y = 554;
	this.onEnterFrame = voller;
};
main.controlBar.vol.onRollOver = function() {
	showTip("Volume");
};
main.controlBar.vol.onRollOut = function() {
	removeTip();
};
main.controlBar.vol.onRelease = main.controlBar.vol.onReleaseOutside = function () {
	this.stopDrag();
	removeTip();
	delete this.onEnterFrame;
};
function voller() {
	var perc = ((main.controlBar.vol._x-544)/(55));
	sou.setVolume(Math.ceil(perc*100));
	myVolume = sou.getVolume();
	main.tooltip.datext.text = sou.getVolume()+"% Volume";
	main.tooltip._x = Math.round(main._xmouse);
	main.tooltip._y = Math.round(main._ymouse);
	main.tooltip._visible = true;
}
//======================================================
//==============TOOL TIPS=======工具提示==================
//======================================================
var ti:Number;
function showTip(datext) {
	ti = getTimer();
	main.tooltip.datext.text = datext;
	main.tooltip.onEnterFrame = function() {
		var tempti = getTimer();
		if (tempti-ti>500) {
			this._x = Math.round(main._xmouse);
			this._y = Math.round(main._ymouse);
			main.tooltip._visible = true;
		}
	};
}
function removeTip() {
	main.tooltip._visible = false;
	delete main.tooltip.onEnterFrame;
}
main.tooltip._visible = false;
main.mute.onRelease = function() {
	if (sou.getVolume() == 0) {
		sou.setVolume(myVolume);
		cb.vol._x = 544+63*myVolume/100;
	} else {
		myVolume = sou.getVolume();
		sou.setVolume(0);
		cb.vol._x = 544;
	}
	main.bugle.play();
};
main.mute.onRollOver = function() {
	showTip("切换静音");//Toggle Mute
};
main.mute.onRollOut = function() {
	removeTip();
};
//dragging 
main.window.onPress =  function() {
	this._parent.startDrag();
    this._parent.swapDepths(5);
	bot.swapDepths(4);
};
bot.listTitleBar.onPress = bot.listContentMc.listContent.onPress =function() {
	bot.startDrag();
	bot.swapDepths(5);
	main.swapDepths(4);
};
main.window.onRelease = main.playerTitleBar.onReleaseOutside =  function() {
	this._parent.stopDrag();
};
bot.listTitleBar.onRelease = bot.listTitleBar.onReleaseOutside = bot.listContentMc.listContent.onRelease = bot.listContentMc.listContent.onReleaseOutside = function() {
	bot.stopDrag();
};
// hide or show the playList
main.plBut.onRelease = function() {
	(bot._visible == true)?bot._visible = false:bot._visible = true;
};
main.plBut.onRollOver = function() {
	showTip("播放列表");//PlayList
};
main.plBut.onRollOut = function() {
	removeTip();
};
bot.close.onRelease = function() {
	bot._visible = false;
}
bot.small.onRelease = function() {
	bot.smallContent.play();
	(bot.listContentMc._visible == true)?bot.listContentMc._visible = false:bot.listContentMc._visible = true;
}
        2015-07-08
AS3.0+XML列表一曲一图音乐播放器
空场景制作
下面是类文件代码 具体下载原码 自己看
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;
    }
}
        2015-12-21
经典频谱文件
package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.Event;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.text.TextField;
    public class SoundMixer_computeSpectrum extends Sprite {
        public function SoundMixer_computeSpectrum() {
            var snd:Sound = new Sound();
            var req:URLRequest = new URLRequest("http://yun.365.sh/s/181445.mp3");
            snd.load(req);
            
            var channel:SoundChannel;
            channel = snd.play();
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
        }
        private function onEnterFrame(event:Event):void {
            var bytes:ByteArray = new ByteArray();
            const PLOT_HEIGHT:int = 200;
            const CHANNEL_LENGTH:int = 256;
            SoundMixer.computeSpectrum(bytes, false, 0);
            
            var g:Graphics = this.graphics;
            
            g.clear();
       
            g.lineStyle(0, 0x6600CC);
            g.beginFill(0x6600CC);
            g.moveTo(0, PLOT_HEIGHT);
            
            var n:Number = 0;
            
            for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
            }
            g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
            g.endFill();
 
            g.lineStyle(0, 0xCC0066);
            g.beginFill(0xCC0066, 0.5);
            g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
            
            for (i = CHANNEL_LENGTH; i > 0; i--) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
            }
  
            g.lineTo(0, PLOT_HEIGHT);
            g.endFill();
        }
        
        private function onPlaybackComplete(event:Event):void {
            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
    }
}
        2015-08-10
强大的MP3搜索王
漫步动漫MP3搜索王是一个非常好用的mp3搜索工具,它能让你无需进入各大网站去找歌,直接一搜就能搜出这个歌的各种资源,它提供了各种搜索引擎,还有广播下载,音乐发烧友可以使用这个mp3搜索器来使用。
        2015-09-14
CS6打开歌词同步频谱播放器源码
package 
{
	
	import com.ui.Loading;
	import com.load.DataLoader;
	import com.load.DisplayLoader
	import com.ui.LRCPlayer
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.ProgressEvent;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.display.StageDisplayState;
	//==============================//
	import flash.events.ContextMenuEvent;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;
	import flash.ui.ContextMenu;
	import flash.ui.ContextMenuItem;
	//===============//
	
	public class Main extends Sprite
	{
		private var xmlLoader:DataLoader;
		private var xml:XML;
		private var playUrl:XMLList;
		private var lrcUrl:XMLList;
		private var title:XMLList;
		private var background:XMLList
		private var loader:DisplayLoader
		private var loading:Loading
		
		private var player:LRCPlayer
		
		
		
		
		public function Main():void
		{
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align=StageAlign.TOP_LEFT;
			
			initLoad("http://km2015.kuaiyunds.com/km2015/gqlb.swf");
			
			loading=new Loading()
			addChild(loading)
			loading.x=(stage.stageWidth-loading.width)/2
			loading.y=(stage.stageHeight-loading.height)/2
			//====================================================================//
			var myContextMenu:ContextMenu = new ContextMenu();
			myContextMenu.hideBuiltInItems();
			this.contextMenu = myContextMenu;
			var menuItem1:ContextMenuItem = new ContextMenuItem("素材:网络 编辑:★漫步人生★ QQ:318516343",true);
			var menuItem2:ContextMenuItem = new ContextMenuItem("★漫步人生★动画教学空间欢迎您!",true);
			var menuItem3:ContextMenuItem = new ContextMenuItem("欣赏更多精彩作品请进入漫步动漫快园",true);
			var menuItem4:ContextMenuItem = new ContextMenuItem("Flash官方最新播放插件升级程序下载更新播放插件",true);
			myContextMenu.customItems.push(menuItem1);
			myContextMenu.customItems.push(menuItem2);
			myContextMenu.customItems.push(menuItem3);
			myContextMenu.customItems.push(menuItem4);
			menuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, F);
			menuItem2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, F);
			menuItem3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, F);
			menuItem4.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, shengj);
		}
		//==============================================================//
		public function F(event:ContextMenuEvent)
		{
			var myurl:URLRequest = null;
			myurl = new URLRequest("http://user.qzone.qq.com/318516343/");
			navigateToURL(myurl, "_blank");
		}
		public function shengj(event:ContextMenuEvent):void
		{
			var myurl:URLRequest = null;
			myurl = new URLRequest("http://km258369.blog.163.com/");
			navigateToURL(myurl, "_blank");
		}//================================================================//
		private function initLoad(url:String):void
		{
			xmlLoader=new DataLoader();
			xmlLoader.url=url;
			xmlLoader.addEventListener(Event.COMPLETE,xmlLoaderCompleteHandler);
		}
		
		private function xmlLoaderCompleteHandler(event:Event):void
		{
			xml=new XML(event.target.data);
			title=xml.song.@label;
			playUrl=xml.song.@mp3Path;
			lrcUrl=xml.song.@lrcPath;
			background=xml.background.@url
			loader=new DisplayLoader(background);
			loader.addEventListener(Event.COMPLETE,completeHandler);
			loader.addEventListener(ProgressEvent.PROGRESS,progressHandler);
		}
		private function progressHandler(event:Event):void
		{
			
               loading.status=event.target.percent+"%"
		}
		private function completeHandler(event:Event):void
		{
			player=new LRCPlayer(playUrl,lrcUrl,title);
			player.x=180//xml.player.@x
			player.y=470//xml.player.@y
			
			removeChild(loading)
			loading=null
			////////////
			addChild(loader)
			addChild(player)
		}
	}
}
        2015-10-18
         
      
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
 RSS订阅
RSS订阅