1、flash as3使用播放声音和加载外部声音文件解析Flash AS3.0打造漂亮的水汶实例教程在这个教程中,我们将用到置换图滤镜(DisplacementMapFilter)和BitmapData类的的杂点功能(perlinNoise),这两个家伙常常给我们带一些令人兴奋的效果,它们今天的合作为我们创造了一个漂亮的的水汶,看看下面的动画,应该还不错吧。现在我开始来构建这个漂亮的水汶:即然是水汶,我想首先要找一张含水的图片吧,XX一下吧,河道,湖泊,水池,你喜欢就行。1. 新建一AS3.0文档,将帧频设为30,将你刚XX到的图片导入到库中,点右键,在属性面板中将“使用JPEG导入品质”前的钩钩
2、去掉,这样做图片的体积就会大大地减小哦。2. 新建一个影片剪辑元件,将图片拖到舞台上,设置图片的大小,你想设多大呢?反正我是按默认的550x400.图片在大小与文档大小一样大哈。点击对齐面板,相对于舞台居中对齐。3. 回到主场景,将MC拖到舞台上,居中放置,为它设置一个实例名称,我用的是”pic”图层上锁。4. 新插入一图层,将图片(注意是图片不是MC哈),拖到舞台上,打开对齐面板,宽高匹配,居中对齐。现在第1,2层的图像是完全重合的,请确认是这样的。选择图片,点击 修改分离,将水面部分选出,删除。可以将第1层隐藏,看看删除后的效果。如下图:5. 新建一层用来写代码,打开动作面板,输入下列代码
3、:1. var bmp:BitmapData = new BitmapData(550,400); 2. var zh:DisplacementMapFilter = new DisplacementMapFilter(bmp,new Point(0,0),1,2,10,600); 3. var p1:Point = new Point(); 4. var p2:Point = new Point(); 5. var zdxg:Array = p1,p2; 6. addEventListener(Event.ENTER_FRAME ,ld); 7. function ld(e:Event):v
4、oid 8. zdxg0.x += 0.2; 9. zdxg1.y += 0.1; 10. bmp.perlinNoise(168,5,2,4,true,true,2,true,zdxg); 11. pic.filters = zh; 12. OK,测试影片,一个漂亮的水汶效果立即出现在你的眼前。代码分析:首先声明了一个与图片一样大的BitmapData类实例bmp,用来作为置换图滤镜的参数。 var bmp:BitmapData = new BitmapData(550,400); 然后声明一个置换图滤镜zh,将bmp作为参数。 var zh:DisplacementMapFilter =
5、new DisplacementMapFilter(bmp,new Point(0,0),1,2,10,600); 接下来声明了两个点,并将这两个点放到到一个叫zdxg的数组中,这个数组将用于bmp产生杂点的参数。 var p1:Point = new Point(); var p2:Point = new Point(); var zdxg:Array = p1,p2; 然后,在ENTER_FRAME事件中调用ld函数。 addEventListener(Event.ENTER_FRAME ,ld); ld函数,动态改变两个点的位置,然后使bmp应用杂点功能,在每一帧的间隔产生不同的杂点效果
6、,使置换滤镜效果产生变化,最后让影片剪辑pic,应用滤镜,实现水汶效果。 function ld(e:Event):void zdxg0.x += 0.2; zdxg1.y += 0.1; bmp.perlinNoise(168,5,2,4,true,true,2,true,zdxg); pic.filters = zh; 利用Flash的AS3.0代码制作3D旋转动画效果效果演示:本教程着重于代码的编写,版本AS 3.0。图形元件的制作不作讲解,请参看有关教程。1、新建Flash文档,创建5 个图形,(或导入5张图片到库中)。2、创建一个影片剪辑,1层为图片层2层为代码层。在1层把5张图片分
7、别放在5帧中,在代码层输入stop(); 如图:3、Ctrl + L 打开库,右键单击影片剪辑实例做链接,类名为:IconMenu 如图:4、返回场景1,图层1为背景层,图层2为代码层。在图层1导入背景图片。图层2输入代码:1. include Math2.as 2. /图片容器 3. var menu:Sprite=new Sprite(); 4. /使图标移动 5. menu.x = 300; 6. menu.y = 200; 7. /注册事件侦听器 8. menu.addEventListener(Event.ENTER_FRAME,moveMenu); 9. this.addChild
8、(menu); 10. /椭圆在x 和y 轴上的截距 11. var disx:Number = 200; 12. var disy:Number = 10; 13. /旋转速度 14. var speed:Number = 0; 15. initMenu(5); 16. function initMenu(n:int) 17. for (var i:int; in; i+) 18. var mc:MovieClip = new IconMenu(); 19. /缩小图标 20. mc.scaleX = mc.scaleY = .5; 21. menu.addChild(mc); 22. 23
9、. 24. /事件侦听器函数 25. function moveMenu(e:Event):void 26. /获取图标数 27. var iconCount:int = menu.numChildren; 28. /定义数组 29. var depthArray:Array = new Array(); 30. /把360度平分 31. var angle:Number = 360 / iconCount; 32. for (var z:int; z 1?1:(testTrans.volume +0.05);testTrans.volume = addedVoc;testChannel.so
10、undTransform = testTrans;10. 设定声音的音量减小。/音量减小private function volumeDownBtnEvent():voidbtnVocDown.addEventListener(MouseEvent.CLICK, downSoundVoc);private function downSoundVoc(e:MouseEvent):voidif (!isSoundPlay) return;testTrans = testChannel.soundTransform;var downVoc:Number = testTrans.volume 1?1:
11、(testTrans.pan + 0.05);testTrans.pan = addedPan;testChannel.soundTransform = testTrans;12. 设定声音的平衡度向左,点击此按钮声音的平衡性会左移,直到变成左声道。/平衡向左移动private function panLeftBtnEvent():voidbtnPanDown.addEventListener(MouseEvent.CLICK, downSoundPan);private function downSoundPan(e:MouseEvent):voidif (!isSoundPlay) ret
12、urn;testTrans = testChannel.soundTransform;var downPan:Number = testTrans.pan 0?0:(testTrans.pan - 0.05);testTrans.pan = downPan;testChannel.soundTransform = testTrans;13. 最后别忘了所有你定义的函数都要写到音乐加载完成的那个函数里执行,或者构造函数也可以。就像下面这样子:/加载音乐并控制播放private function soundLoadOver(e:Event):voidtestSound.removeEventListener(Event.COMPLETE, soundLoadOver);soudLoad = true;playBtnEvent();pauseBtnEvent();stopBtnEvent();qucikBtnEvent();volumeUpBtnEvent();volumeDownBtnEvent();panRightBtnEvent();panLeftBtnEvent();14. 所有这些一个个代码合并到一
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1