33.//根据深度获取图标
34.varmc:
MovieClip=menu.getChildAt(z);
35.//跳转到不同帧,来显示不同的图标
36.mc.gotoAndStop(z+1);
37.//设置图标的位置
38.mc.x=cosD(speed+angle*z)*disx;
39.mc.y=sinD(speed+angle*z)*disy;
40.setProp(mc,"alpha");
41.setProp(mc,"scaleX",.2,.7);
42.setProp(mc,"scaleY",.2,.7);
43.//保存图标到数组
44.depthArray[z]=mc;
45.}
46.//重新设置图标的深度
47.arrange(depthArray);
48.speed+=2;
49.}
50.functionarrange(depthArray:
Array):
void{
51.//按照y坐标排序
52.depthArray.sortOn("y",Array.NUMERIC);
53.vari:
int=depthArray.length;
54.while(i--){
55.menu.setChildIndex(depthArray[i],i);
56.}
57.}
58.functionsetProp(mc:
MovieClip,prop:
String,n1:
Number=.5,n2:
Number=1):
void{
59.mc[prop]=((mc.y+2*disy)/disy-1)/2*(n2-n1)+n1;
60.}
5、新建.as文档,保存名为:
Math2.as(这个文档是进行三角函数的计算)
输入代码:
1.//角度转弧度
2.functionangleToRadian(angle:
Number):
Number
3.{
4.returnangle*(Math.PI/180);
5.}
6.//弧度转角度
7.functionradianToAngle(radian:
Number):
Number
8.{
9.returnradian*(180/Math.PI);
10.}
11.//计算正弦值
12.functionsinD(angle:
Number):
Number
13.{
14.returnMath.sin(angleToRadian(angle));
15.}
16.//计算余弦值
17.functioncosD(angle:
Number):
Number
18.{
19.returnMath.cos(angleToRadian(angle));
20.}
21.//计算反正切
22.functionatan2D(y:
Number,x:
Number):
Number
23.{
24.returnradianToAngle(Math.atan2(y,x));
25.}
复制代码
把fla文档与Math2.as文档保存在同一目录下,进行测试。
[AS3编程教学]从库中加载声音并控制播放
概述:
Flash交互作品对于声音的控制是比较灵活和常用的,接下去笔者将抽空对声音控制写一批由简至难的教程,而本节教程详细讲述如何从库里加载一个声音文件到舞台上并控制其播放。
1.首先,我们打开FlashCS5,按下Ctrl+N,新建一个FlashAS3文档,如下图所示:
2.其次,我们需要导入一个mp3格式的音乐文件到库中。
可以执行“文件/导入/导入到库”来操作,也可以直接从文件夹拖动到flash库里,如下图所示我们导入了声音文件:
3.要用程序将声音加载到舞台控制播放,那么就需要给声音文件一个绑定的类名,所以我们在声音文件上单击右键/属性,然后点击ActionScript,勾选“为ActionScript导出和第一帧导出”,给声音一个链接类名:
TestSound:
4.选择主时间轴第一帧,按下F9,写以下代码,然后按下Ctrl+Enter,你便能听到音乐播放了:
importflash.media.Sound;
varmySound:
Sound=newTestSound()asSound;
mySound.play();
1.播放函数有一个开始播放时间和重复播放次数的参数,我们让声音从第三秒开始播放,并且连续播放三遍需要这样写:
importflash.media.Sound;
varmySound:
Sound=newTestSound()asSound;
mySound.play(3000,3);
2.还有一个就是循环播放,当声音播放结束后自动开始再次播放,重复无数遍,此时就需要增加一个事件监听,当播放结束后再次开始:
importflash.media.Sound;
varmySound:
Sound=newTestSound()asSound;
varsndChanel:
SoundChannel=mySound.play();
sndChanel.addEventListener(Event.SOUND_COMPLETE,rePlaySound);
functionrePlaySound(e:
Event):
void
{
mySound.play();
}
如果声音文件导入时提示“一个或多个文件未导入”,一般是mp3文件过大或者格式不兼容,你下载一个“全能音频转换通”,另存为一下就好了。
[AS3.0编程教学]最全的声音控制方法
网上做flash音乐播放器的人不少,这个作品主要是对声音的外部读取,然后保存,然后控制播放,暂停,停止等操作,今天这个作品就是向大家展示这些操作的方法。
1.首先我们新建一个文件,在舞台上摆出下面这些按钮,我们今天对这个声音文件的操纵就如按钮所示:
2.动手之前我们按下Ctrl+Shift+F12,打开ActionScript设置,将“自动申明舞台对象”打钩取消,我们将每个对象自己用Public声明,这样做的好处是开发时每个元件的属性方便引用和提醒。
3.我们新建一个文档类,首先声明舞台上这些按钮,并定义声音变量:
testSound,控制变量testChannel,testTrans,testPosition。
publicvarbtnPlay:
SimpleButton;
publicvarbtnPause:
SimpleButton;
publicvarbtnStop:
SimpleButton;
publicvarbtnQuick:
SimpleButton;
publicvarbtnVocUp:
SimpleButton;
publicvarbtnVocDown:
SimpleButton;
publicvarbtnPanUp:
SimpleButton;
publicvarbtnPanDown:
SimpleButton;
privatevartestSound:
Sound;
privatevartestChannel:
SoundChannel;
privatevartestTrans:
SoundTransform;
privatevartestPosition:
Number=0;
4.首先用下面代码将一首叫做“test.mp3"的音乐加载到舞台。
publicfunctionTestSoundMain(){
testSound=newSound();
testChannel=newSoundChannel();
testTrans=newSoundTransform();
testSound.load(newURLRequest("test.mp3"));
testSound.addEventListener(Event.COMPLETE,soundLoadOver);
}
privatefunctionsoundLoadOver(e:
Event):
void {
testSound.removeEventListener(Event.COMPLETE,soundLoadOver);
soudLoad=true;
}
5.播放按钮功能。
控制音乐播放的按钮,单击后音乐开始播放,并记录音乐的SoundChannel属性。
为了防止连击,我们定义一个isSoundPlay布尔变量判断音乐是否在播放中。
//播放按钮功能
privatefunctionplayBtnEvent():
void{
btnPlay.addEventListener(MouseEvent.CLICK,soundPlay);
}
privatefunctionsoundPlay(e:
MouseEvent):
void {
if(isSoundPlay)return;
isSoundPlay=true;
testChannel=testSound.play(testPosition);
}
6.暂停按钮功能,该按钮让音乐暂停掉,为了能继续播放,我们需要记录下此时testChannel的位置,然后播放按钮单击时可以继续播放
//暂停按钮功能
privatefunctionpauseBtnEvent():
void{
btnPause.addEventListener(MouseEvent.CLICK,soudPause);
}
privatefunctionsoudPause(e:
MouseEvent):
void {
if(!
isSoundPlay)return;
isSoundPlay=false;
testPosition=testChannel.position;
testChannel.stop();
}
7.停止按钮功能,单击后音乐停止播放,记录位置归0.
//停止按钮功能
privatefunctionstopBtnEvent():
void{
btnStop.addEventListener(MouseEvent.CLICK,soundStop);
}
privatefunctionsoundStop(e:
MouseEvent):
void {
isSoundPlay=false;
testPosition=0
testChannel.stop();
}
8.快进声音。
单击该按钮时,我们让声音从当前位置向前播放500毫秒,也就是快进半秒。
//快进按钮功能
privatefunctionqucikBtnEvent():
void{
btnQuick.addEventListener(MouseEvent.CLICK,soudQuickPlay);
}
privatefunctionsoudQuickPlay(e:
MouseEvent):
void {
if(!
isSoundPlay)return;
testPosition=testChannel.position;
testChannel.stop();
testChannel=testSound.play(testPosition+500);
}
9.设定声音的音量增加。
控制音量就需要soundTransform对象了,它其实是testChanel的soundTransform属性而已,通过它来控制音量。
//音量增加
privatefunctionvolumeUpBtnEvent():
void{
btnVocUp.addEventListener(MouseEvent.CLICK,upSoudVoc);
}
privatefunctionupSoudVoc(e:
MouseEvent):
void {
if(!
isSoundPlay)return;
testTrans=testChannel.soundTransform;
varaddedVoc:
Number=testTrans.volume>1?
1:
(testTrans.volume+ 0.05);
testTrans.volume=addedVoc;
testChannel.soundTransform=testTrans;
}
10.设定声音的音量减小。
//音量减小
privatefunctionvolumeDownBtnEvent():
void{
btnVocDown.addEventListener(MouseEvent.CLICK,downSoundVoc);
}
privatefunctiondownSoundVoc(e:
MouseEvent):
void {
if(!
isSoundPlay)return;
testTrans=testChannel.soundTransform;
vardownVoc:
Number=testTrans.volume<0?
0:
(testTrans.volume- 0.05);
testTrans.volume=downVoc;
testChannel.soundTransform=testTrans;
}
11.设定声音的平衡度向右,点击此按钮声音的平衡性会右移,直到变成右声道。
//平衡向右移动
privatefunctionpanRightBtnEvent():
void{
btnPanUp.addEventListener(MouseEvent.CLICK,upSoundPan);
}
privatefunctionupSoundPan(e:
MouseEvent):
void {
if(!
isSoundPlay)return;
testTrans=testChannel.soundTransform;
varaddedPan:
Number=testTrans.pan>1?
1:
(testTrans.pan+0.05);
testTrans.pan=addedPan;
testChannel.soundTransform=testTrans;
}
12.设定声音的平衡度向左,点击此按钮声音的平衡性会左移,直到变成左声道。
//平衡向左移动
privatefunctionpanLeftBtnEvent():
void{
btnPanDown.addEventListener(MouseEvent.CLICK,downSoundPan);
}
privatefunctiondownSoundPan(e:
MouseEvent):
void {
if(!
isSoundPlay)return;
testTrans=testChannel.soundTransform;
vardownPan:
Number=testTrans.pan<0?
0:
(testTrans.pan-0.05);
testTrans.pan=downPan;
testChannel.soundTransform=testTrans;
}
13.最后别忘了所有你定义的函数都要写到音乐加载完成的那个函数里执行,或者构造函数也可以。
就像下面这样子:
//加载音乐并控制播放
privatefunctionsoundLoadOver(e:
Event):
void {
testSound.removeEventListener(Event.COMPLETE,soundLoadOver);
soudLoad=true;
playBtnEvent();
pauseBtnEvent();
stopBtnEvent();
qucikBtnEvent();
volumeUpBtnEvent();
volumeDownBtnEvent();
panRightBtnEvent();
panLeftBtnEvent();
}
14.所有这些一个个代码合并到一