flash as3使用播放声音和加载外部声音文件解析.docx

上传人:b****6 文档编号:8651600 上传时间:2023-02-01 格式:DOCX 页数:32 大小:674.66KB
下载 相关 举报
flash as3使用播放声音和加载外部声音文件解析.docx_第1页
第1页 / 共32页
flash as3使用播放声音和加载外部声音文件解析.docx_第2页
第2页 / 共32页
flash as3使用播放声音和加载外部声音文件解析.docx_第3页
第3页 / 共32页
flash as3使用播放声音和加载外部声音文件解析.docx_第4页
第4页 / 共32页
flash as3使用播放声音和加载外部声音文件解析.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

flash as3使用播放声音和加载外部声音文件解析.docx

《flash as3使用播放声音和加载外部声音文件解析.docx》由会员分享,可在线阅读,更多相关《flash as3使用播放声音和加载外部声音文件解析.docx(32页珍藏版)》请在冰豆网上搜索。

flash as3使用播放声音和加载外部声音文件解析.docx

flashas3使用播放声音和加载外部声音文件解析

FlashAS3.0打造漂亮的水汶实例教程

在这个教程中,我们将用到置换图滤镜(DisplacementMapFilter)和BitmapData类的的杂点功能(perlinNoise),这两个家伙常常给我们带一些令人兴奋的效果,它们今天的合作为我们创造了一个漂亮的的水汶,看看下面的动画,应该还不错吧。

现在我开始来构建这个漂亮的水汶:

即然是水汶,我想首先要找一张含水的图片吧,XX一下吧,河道,湖泊,水池,你喜欢就行。

1.新建一AS3.0文档,将帧频设为30,将你刚XX到的图片导入到库中,点右键,在属性面板中将“使用JPEG导入品质”前的钩钩去掉,这样做图片的体积就会大大地减小哦。

2.新建一个影片剪辑元件,将图片拖到舞台上,设置图片的大小,你想设多大呢?

反正我是按默认的550x400.图片在大小与文档大小一样大哈。

点击对齐面板,相对于舞台居中对齐。

3.回到主场景,将MC拖到舞台上,居中放置,为它设置一个实例名称,我用的是”pic”图层上锁。

4.新插入一图层,将图片(注意是图片不是MC哈),拖到舞台上,打开对齐面板,宽高匹配,居中对齐。

现在第1,2层的图像是完全重合的,请确认是这样的。

选择图片,点击修改>分离,将水面部分选出,删除。

可以将第1层隐藏,看看删除后的效果。

如下图:

5.新建一层用来写代码,打开动作面板,输入下列代码:

1.varbmp:

BitmapData=newBitmapData(550,400);

2.varzh:

DisplacementMapFilter=newDisplacementMapFilter(bmp,newPoint(0,0),1,2,10,600);

3.varp1:

Point=newPoint();

4.varp2:

Point=newPoint();

5.varzdxg:

Array=[p1,p2];

6.addEventListener(Event.ENTER_FRAME,ld);

7.functionld(e:

Event):

void{

8.zdxg[0].x+=0.2;

9.zdxg[1].y+=0.1;

10.bmp.perlinNoise(168,5,2,4,true,true,2,true,zdxg);

11.pic.filters=[zh];

12.}

OK,测试影片,一个漂亮的水汶效果立即出现在你的眼前。

代码分析:

首先声明了一个与图片一样大的BitmapData类实例bmp,用来作为置换图滤镜的参数。

varbmp:

BitmapData=newBitmapData(550,400);

然后声明一个置换图滤镜zh,将bmp作为参数。

varzh:

DisplacementMapFilter=newDisplacementMapFilter(bmp,newPoint(0,0),1,2,10,600);

接下来声明了两个点,并将这两个点放到到一个叫zdxg的数组中,这个数组将用于bmp产生杂点的参数。

varp1:

Point=newPoint();

varp2:

Point=newPoint();

varzdxg:

Array=[p1,p2];

然后,在ENTER_FRAME事件中调用ld函数。

addEventListener(Event.ENTER_FRAME,ld);

ld函数,动态改变两个点的位置,然后使bmp应用杂点功能,在每一帧的间隔产生不同的杂点效果,使置换滤镜效果产生变化,最后让影片剪辑pic,应用滤镜,实现水汶效果。

functionld(e:

Event):

void{

zdxg[0].x+=0.2;

zdxg[1].y+=0.1;

bmp.perlinNoise(168,5,2,4,true,true,2,true,zdxg);

pic.filters=[zh];

}

利用Flash的AS3.0代码制作3D旋转动画效果

效果演示:

〖本教程着重于代码的编写,版本AS3.0。

图形元件的制作不作讲解,请参看有关教程。

1、新建Flash文档,创建5个图形,(或导入5张图片到库中)。

2、创建一个影片剪辑,1层为图片层2层为代码层。

在1层把5张图片分别放在5帧中,在代码层输入stop();如图:

3、Ctrl+L打开库,右键单击影片剪辑实例做链接,类名为:

IconMenu如图:

4、返回场景1,图层1为背景层,图层2为代码层。

在图层1导入背景图片。

图层2输入代码:

1.include"Math2.as"

2.//图片容器

3.varmenu:

Sprite=newSprite();

4.//使图标移动

5.menu.x=300;

6.menu.y=200;

7.//注册事件侦听器

8.menu.addEventListener(Event.ENTER_FRAME,moveMenu);

9.this.addChild(menu);

10.//椭圆在x和y轴上的截距

11.vardisx:

Number=200;

12.vardisy:

Number=10;

13.//旋转速度

14.varspeed:

Number=0;

15.initMenu(5);

16.functioninitMenu(n:

int){

17.for(vari:

int;i

18.varmc:

MovieClip=newIconMenu();

19.//缩小图标

20.mc.scaleX=mc.scaleY=.5;

21.menu.addChild(mc);

22.}

23.}

24.//事件侦听器函数

25.functionmoveMenu(e:

Event):

void{

26.//获取图标数

27.variconCount:

int=menu.numChildren;

28.//定义数组

29.vardepthArray:

Array=newArray();

30.//把360度平分

31.varangle:

Number=360/iconCount;

32.for(varz:

int;z

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.所有这些一个个代码合并到一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1