现在的位置: 首页 > 综合 > 正文

flash音乐控制终极指南

2013年03月16日 ⁄ 综合 ⁄ 共 4328字 ⁄ 字号 评论关闭

在flash的编程语言as中有专门的声音对象Sound,利用Sound中的方法可以达到对声音的控制。在Sound中包括如下方法:Sound.attachSound;Sound.setPan;Sound.setTransform;Sound.setVolume;

Sound.getPan;Sound.getTransform;Sound.getVolume;

Sound.getBytesLoaded;Sound.getBytesToal;Sound.start;Sound.stop。

在使用这些方法前必须先使用构造器函数new Sound来创建新的对象。具体方法如下:

mysound=new Sound();//mysound是一个变量名,new Sound是一个构造函数,表示mysound是一个Sound对象。以后可以通过mysound来调用Sound方法,如mysound.attachSound();在new Sound()里也可填写一个声音对象所在的mc,如mysound=new Sound(mymovie),这时就可以通过mysound来控制mymovie里的声音了,一般都不用写,然后用attachSound方法调如库中的声音。

下面简单介绍一下声音Sound对象的方法的各个含义:

1)Sound.attachSound("name");

将flash当前库中的连接名为name的声音文件附给当前对象;name是该声音文件在库中的Linkage(连接)中输入的名字,在库中一个声音文件上点击右键,选择Linkage,在弹出对话框中的Id栏中输入name,然后选择在linkage中选Export for ActionScrip即可。

一般在创建完声音对象后都会用此方法为声音对象变量连接声音文件。然后用mysoun.start()播放声音。

2)Sound.setPan(pan);

利用这个方法可以确定声音在左右声道中播放的方式,对于单声道声音声音而言,pan可以确定哪个扬声

器(左或右)播放声音。

Sound.setPan(pan)中的参数pan用来指定声音的左右平衡的整数,有效值的取值范围是-100~100。-100表

示只有左声道发声,100表示只有右声道发声,0表示左右声道相等。

例如:

mysound=new Sound();//创建一个声音对象

mysound.attachSound("yinyue");//将库中Linkage名为yinyue的声音文件附给mysound

mysound.setPan(-100);//设置只有左声道发声。

3)Sound.setTransform(soundTransformObject);

该方法可以为声音对象设置声音的变形或平衡信息。用户可以使用setTransfor方法按立体声效果播放单

声道声音,也可按单声道效果播放立体声声音或给声音添加其他效果。soundtransformObject参数是使用

普通Object对象的构造器创建的对象(要用new Object创建),该对象的参数将指定如何分配左右声道的声

音。soundtransformObject的参数包括:

ll(left/left)指定左声道输入在左边扬声器中播放的百分比值(0--100);

lr(left/right)指定右声道输入在左边扬声器中播放的百分比值(0--100);

rr(right/right)指定右声道输入在右边扬声器中播放的百分比值(0--100);

rl(right/left)指定左声道输入在右边扬声器中播放的百分比值(0--100);

这四个参数,第一位表示左右扬声器,第二位表示左右声道。

下面我们通过几个例子帮助大家理解:

//****立体声播放*****。立体声可以在左右扬声器之间平均分割声音输入所以可以这样写:

mysound=new Sound();//创建一个声音对象

mysound.attachSound("yinyue");//将库中Linkage名为yinyue的声音文件附给mysound

mytrans=new Object;//创建一个Object对象

mytrans.ll=100;//设置左声道输入在左边扬声器中播放的百分比值为100

mytrans.lr=0;//设置右声道输入在左边扬声器中播放的百分比值为0

mytrans.rr=100;//设置右声道输入在右边扬声器中播放的百分比值为100

mytrans.rl=0;//设置左声道输入在右边扬声器中播放的百分比值为0

mysound.setTransform(mytrans);//使用setTransform方法传递参数

mysound.start();//开始播放

//****设置两个声道声音在一个左扬声器中播放****

mysound=new Sound();

mysound.attachSound("yinyue");

mytrans=new Object;

mytrans.ll=100;//在左声道播放所以两个l开头的都为100

mytrans.lr=100;

mytrans.rr=0;

mytrans.rl=0;

mysound.setTransform(mytrans);

mysound.start();

//****设置将立体声作为单声道播放****

mysound=new Sound();

mysound.attachSound("yinyue");

mytrans=new Object;

mytrans.ll=50;

mytrans.lr=50;

mytrans.rr=50;

mytrans.rl=50;

mysound.setTransform(mytrans);

mysound.start();

因为立体声是单声道的双倍,立体声是100,所以单声道是50。

//****设置左声道按一半功率播放,然后剩下的左声道添加到右声道****

mysound=new Sound();

mysound.attachSound("yinyue");

mytrans=new Object;

mytrans.ll=50;

mytrans.lr=0;

mytrans.rr=100;

mytrans.rl=50;

mysound.setTransform(mytrans);

mysound.start();

4)Sound.setVolume(volume)

该方法可以设置声音对象的音量。volume表示音量级别的数字(0--100)

mysound=new Sound();

mysound.attachSound("yinyue");

mysound.setVolume(50);//设置音量为50%

mysound.start();

5)Sound.getPan()

该方法可以返回用setPan设置的声音左右平衡的值。

如:mysound.getPan();

6)Sound.getTransform()

该方法可以返回指定声音对象使用setTransform方法设置的声音变化信息。

如:mysound.getTransform();

7)Sound.getVolume()

该方法可以返回从0到100的音量级别。

如:mysound.getVolume;

8)Sound.getBytesLoaded()

该方法可以返回指定的声音对象已经下载的字节数。

9)Sound.getBytesToal

该方法可以返回指定的声音对象的大小,以字节为单位。可以配合Sound.getBytesLoaded()进行比较,以

确定声音下载的百分比。

10)Sound.start([secondOffset,loop])

该方法允许用户从指定位置开始播放声音。secondOffset是可选参数,表示声音开始的位置,单位为秒。

如:mysound.start(30);//声音从30秒处开始

11)Sound.stop(["idName"])

该方法可以让所有声音停止播放。idName为可选参数,是在Linkage中为声音对象起的连接名字,表示指

定要停止播放的声音。

如:mysound.stop();

声音对象除了上述主要方法外,还有其他方法:

12)Sound.duration

只读属性。声音的持续时间,以毫秒为单位。可用来表示声音的长度。

如:用秒表示声音的长度:

w=mysound.duration/1000;然后把w的值给一个动态文本框。

13)Sound.loadSound("url",isStreaming)

该方法可以将mp3文件载入到声音对象的实例中。用户可以使用isStreaming参数指定是流式声音还是事件

声音。事件声音必须全部载入才能播放,他们由as的声音对象进行管理,可以响应声音对象所有的方法和

属性。流式声音可以边下载边播放。当接受到足够数据时,流式声音就可以解压播放。

url参数表示mp3文件在服务器上的位置(也可是本地位置,不过要确保本地存有此文件)。isStreaming表

示指定声音是流式声音还是事件声音的逻辑值,false表示事件声音,true表示流式声音。不管事件声音

还是流式声音都不会被下载到本地硬盘,只存在于虚拟内存中。

如:载入一个事件声音

mysound.loadSound("http://www.flasher.cn/mp3.mp3";;,false); 

载入一个流式声音

mysound.loadSound("http://www.flasher.cn/mp3.mp3";;,true); 

14)Sound.onLoad

事件处理程序。可以在声音载入时自动调用。用户必须创建onLoad事件被调用之后要执行的函数。可以使

用匿名函数,也可以使用命名函数。

如:mysound.onLoad=callbackFunction;//callbackfunction为要调用的命名函数。

15)Sound.onSoundComplete

当声音播放完毕时它将被自动调用。用户可以使用onSoundComplete事件触发电影中某些声音结束的事件

。用户必须创建onSoundComplete事件被调用之后要执行的函数。可以使用匿名函数,也可以使用命名函

数。

如:mysound=new sound();

mysound.attachSound("yinyue");

mysound.onSoundComplete=function{trace("mySound ");};//调用一个匿名函数

mysound.start();

16)Sound.position

该属性返回声音已播放的毫秒数。如果是循环,则在每个循环开始之前,position属性将被重新设置为0

抱歉!评论已关闭.