发新帖  新投票  回帖 
2624个阅读者,5条回复 | 打印 | 订阅 | 收藏
haiwer

发表时间:2014-3-22 09:50

介绍一个小球频谱,做音乐播放器的可以试做![讨论]



haiwer 发表在 音乐播放器 华声论坛 http://bbs.voc.com.cn/forum-344-1.html


 
haiwer

回复时间:2014-3-22 09:56
不能上传压缩文件,源码贴上

1、主类
package {
import flash.display.MovieClip;
import flash.geom.ColorTransform;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.StageDisplayState;
import flash.events.Event;
import fl.transitions.TweenEvent;
import flash.display.Sprite;
//导入包
public class Main extends MovieClip {
public var num:Number;
public var shang_num:Number;
public var arr:Array=new Array();
public var num_arr:Array=new Array();
public var boo_arr:Array=new Array();
var mu:music=new music();
var bounce:Number=-0.7;
var gra:Number=0.4;
var spr:Sprite;
var y_in:Number;
public function Main() {
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE,cha_pos);
mu.init();
init();
}
private function init():void
{

for(var i:int=0;i<80;i++)
{
var cir_1:Circle=new Circle();
cir_1.scaleX=Math.random();
if(cir_1.scaleX<=0.4)cir_1.scaleX=0.4;
cir_1.scaleY=cir_1.scaleX;
cir_1.x=stage.stageWidth*Math.random();
cir_1.y=0;
var s:ColorTransform = new ColorTransform();
var m:uint = 0xffffff*Math.random();
s.color = m;
cir_1.transform.colorTransform = s;
stage.addChild(cir_1);
cir_1.y=stage.stageHeight-cir_1.height/2;
cir_1.name="circle"+i.toString();
arr.push(cir_1);
var int_num:Number;
num_arr.push(int_num);
var boo:Boolean=false;
boo_arr.push(boo);
}
for(var num:int=0;num {
arr[num].ping();
arr[num].addEventListener(Event.ENTER_FRAME,cir_x_pos);
}
}
private function cir_x_pos(e:Event):void
{ var arr_int:int=e.target.name.slice(6);
if(mu.byteArr.bytesAvailable>0)
{
if(boo_arr[arr_int]==false)
{
var x_int:int=(e.target.x/stage.stageWidth)*2048;
num_arr[arr_int]=-mu.byteArr[x_int]*0.1;//这里设定了y方向上的初始值
boo_arr[arr_int]=true;
}
else{
num_arr[arr_int]+=gra;
e.target.y+=num_arr[arr_int];
if(e.target.y>=stage.stageHeight-e.target.height/2)
{
e.target.y=stage.stageHeight-e.target.height/2;
num_arr[arr_int]*=bounce;
if(Math.abs(num_arr[arr_int])<=0.3)
{
num_arr[arr_int]=0.0;
e.target.y=stage.stageHeight-e.target.height/2;
boo_arr[arr_int]=false;
}
else{}
}
else{}
}
}
else{}
}
private function cha_pos(e:Event):void
{
for(var i:int=0;i {
var y_pos1:Number=stage.stageHeight-arr.height/2;
var myTween:Tween = new Tween(arr, "y",Bounce.easeOut, arr.y,y_pos1, 2+0.5*Math.random(), true);
}
}
}
}

 
haiwer

回复时间:2014-3-22 09:57
2、音乐类
package
{
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.media.Sound;
import flash.media.SoundMixer;
import flash.media.SoundChannel;
import flash.events.Event;
public class music extends MovieClip
{
public var byteArr:ByteArray=new ByteArray();
public var n:Number = 0;
public function music()
{
}
public function init():void
{
var sound:Sound=new Sound();
var channel:SoundChannel=new SoundChannel();
/* var url:String="01.mp3";
var req:URLRequest = new URLRequest(url);
sound.load(req);*/
var yinyue:odsl=new odsl();
channel = yinyue.play();
addEventListener(Event.ENTER_FRAME,pl);
}
public function pl(e:Event):void
{
SoundMixer.computeSpectrum(byteArr,false,0);
}
}
}//绘制波形,将波形存储到数组之中

 
haiwer

回复时间:2014-3-22 09:58
3、绘图类
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.StageDisplayState;
import flash.utils.Timer;
import flash.events.TimerEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;
public class Circle extends MovieClip{
public var i_pos:int;
public var y_pos:int;
private var pos:Number;
public var y_boo:Boolean;
public var i:int=1;
public function Circle() {
graphics.clear();
graphics.beginFill(0xffffff,100);
graphics.drawCircle(0,0,10);
graphics.endFill();
}
public function ping():void
{
var num:Number=Math.random();
pos=num;
this.addEventListener(Event.ENTER_FRAME,ping_act);
}
private function ping_act(e:Event):void
{
if(pos<=0.4){if(this.x>=stage.stageWidth-this.width/2){pos+=0.4;}
else{
this.x+=0.4;
}}
else{if(this.x<=this.width/2){pos-=0.4}
else{
this.x-=0.4;
}}//相互交叉,四种情况,实现了每个球自我判断,进行左右的平移
}
}
}

 
haiwer

回复时间:2014-3-22 10:01
制作:找首MP3音乐放文件夹,新建fla文档,打开主类即可。音乐类稍作修改,调用的是库中音乐。

注:频谱源码来自网络,有bug,请高手修改吧!

[本帖最后由 haiwer 于 2014-3-22 10:04 编辑]

 
del256

回复时间:2014-3-22 20:53
如此播放器很独特很棒

 
发新帖 新投票
 回帖
查看积分策略说明快速回复主题
你的用户名: 密码:   免费注册(只要30秒)


启用 Html 代码
使用个人签名
(请您文明上网理性发言!并遵守相关规定贴文发布前,请确认贴文内容完全由您个人创作或您得到了版权所有者的授权。版权声明
   



Processed in 0.013449 s, 8 q - sitemap,