Flash实用技巧2--声音整合(as3.0)

发布时间:2012-11-30    发布:    分类:技术文档

      优质的声音效果可以让 Flash 影片更加真实、引人入胜。
      我们可以使用不同的方法来加入声音。回溯到 Flash IDE 最早的程序版本,我们有一
种使用声音的特殊方式 —— 将声音导入到库,再把它加入到帧里面。 这不是我要介绍的方
法。我将介绍在 AS 3 中使用声音的一些基础。
     AS 3 的 Sound 类有了很大的变化,而且还有几个额外的类可以帮助我们对其进行修
饰。这里没有太多的空间进行深入的讨论,     但是有一个方面我想应该对于我们这本书来说会
很有用。这就是当动画中发生某种事件时,应该播放声音。最明显的就应该是碰撞了。一个
小球碰到墙上或其它小球上,我们会听到“砰”“啵嘤”“啪”或其它什么声音。因此,我
                                                、     
们需要掌握通过 ActionScript 来启动声音的能力。
  这个例子中,我们还要回到 Bouncing2.as,小球会与墙壁产生碰撞。每次碰撞到墙壁时,
我想让它发出声音。新的类请见 SoundEvents.as。
      首先,需要有声音效果。在网上有许多免费的声音效果资源。其中最火的 Flash 声音
网 站 是 FlashKit 。 他 们 的 音 乐 文 件 除 了 有 loop 以 外 , 还 有 一 个 声 音 效果库
www.flashkit.com/soundfx/。这些效果被分类为 Cartoon,Interfaces,Mechanical 等等,而且
这个网站有超过 6,000 多个声音效果文件,所以您应该能够找到适合自己的音效。我们可
                                    ,找到自己喜欢的文件后,以 MP3 格式进行下载。将
以在页面上直接进行预览(preview)
它保存到硬盘上与最终发部的影片放在同一目录下。
      有时我们要重新给文件一个更为简单的名字。例如,我下载了一个“boing”声音,我
就将它重命名为 boing.mp3。
      在 AS 3 中使用声音的基础实际上要比 AS 2 中简单一些。
首先,我们需要创建声音对象。假设在类中已经声明了一个名为 boing 的变量:
     private var boing:Sound;
创建一个声音对象就这么简单:
     boing = new Sound();
当然,如同大多数 AS 3 的类一样,Sound 类也在包中,flash.media 包,因此要确保先导
入 flash.media.Sound。
     连接一个外部声音对象最简单的方法是在构造函数中传入一个请求(request) 。
     就像读取外部图像(第四章)一样,我们不能直接传入外部声音文件的 URL。而是要
将它包装到 URLRequest 中(flash.net.URLRequest,需要导入它) 。应该像这样:
     boing = new Sound(new URLRequest("boing.mp3"));
全部内容就是这样。现在声音已经准备好。我们要做的就是:
     mySound.play();
无论在哪儿都会播放出这个音效。在 play 中有一些可选参数,如偏移的毫秒数,以及播放
的次数, 但是默认情况下是从声音的起始位置播放一次声音,这已经满足了我们通常的需求。
以下是 SoundEvents.as 的全部代码,展示了 Sound 对象的创建,无论何时小球碰撞到墙上,
都会播放声音。
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.media.Sound;
import flash.net.URLRequest;
public class SoundEvents extends Sprite {
 private var ball:Ball;
 private var vx:Number;
 private var vy:Number;
 private var bounce:Number = -0.7;
 private var boing:Sound;
 public function SoundEvents() {
   init();
 }
 private function init():void {
   boing = new Sound(new URLRequest("boing.mp3"));
   ball = new Ball();
   ball.x = stage.stageWidth / 2;
   ball.y = stage.stageHeight / 2;
   vx = Math.random() * 10 - 5;
   vy = -10;
   addChild(ball);
   addEventListener(Event.ENTER_FRAME, onEnterFrame);
 }
 private function onEnterFrame(event:Event):void {
   ball.x += vx;
   ball.y += vy;
   var left:Number = 0;
  var right:Number = stage.stageWidth;
  var top:Number = 0;
  var bottom:Number = stage.stageHeight;
  if (ball.x + ball.radius > right) {
    boing.play();
    ball.x = right - ball.radius;
    vx *= bounce;
  } else if (ball.x - ball.radius < left) {
    boing.play();
    ball.x = left + ball.radius;
    vx *= bounce;
  }
  if (ball.y + ball.radius > bottom) {
    boing.play();
    ball.y = bottom - ball.radius;
    vy *= bounce;
  } else if (ball.y - ball.radius < top) {
    boing.play();
    ball.y = top + ball.radius;
    vy *= bounce;
  }
}
  }
}
    测试一下影片看一看 … … 听一听拥有声音以后带来的不同感受。当然,要找到正确
的声音用在正确的环境下,也不要加得太多,因为这本身也是一门艺术
 

查看 [2893]   评论 [0] 
相关标签: 网页设计  视觉设计  网络广告 
文章评论
暂无数据!
我来说两句
昵 称:
评 论:
   
咨询电话:020-61136292 87569708 61004412 61004413
讯博官网 | 走进讯博 | 整合营销 | 案例解读 | 资讯中心 | 案例欣赏 | 产品体验区 | 客户如是说 | 联系我们
版权所有 © 2003-2014 广州讯博网络科技有限公司 粤ICP备08107356号 开心一刻
Website Design & Power by:Cenbel.com