首先来看一个演示,如果你装了麦克风,那么请对着你的麦克风大声的啊一下,下面的flash演示就会动起来
随着你声音的大小不一,他每次跳动的高度和速度也不一样

下面是源代码,不过是接口展示而已,所以是一个很简单的例子,也是很容易看懂的

package {
  import flash.display.Shape;
  import flash.display.Sprite;
  import flash.events.ActivityEvent;
  import flash.events.Event;
  import flash.media.Microphone;

  public class SoundGame extends Sprite
  {
    private var main:Sprite;
    private var mic:Microphone;
    
    private var minHigh:int = 0;
    private var intervalValue:int = 0;
    
    public function SoundGame()
    {
      init();
    }
    
    //初始化
    private function init():void{
      initMic();
      createSky();
      createLand();
      createMain();
    }
    
    //初始化麦克风
    private function initMic():void{
      mic = Microphone.getMicrophone();
      mic.setSilenceLevel(30,0);
      mic.setLoopBack();
      
      mic.addEventListener(ActivityEvent.ACTIVITY,micActivityHandle);
    }
    
    //创建操作
    private function createMain():void{
      var mainContainer:Sprite = new Sprite;
      main = new Sprite;
      main.graphics.beginFill(0xffffff);
      main.graphics.drawCircle(-2,-4,4);
      mainContainer.x = 100;
      mainContainer.y = 250;
      mainContainer.addChild(main);
      addChild(mainContainer);
      
      main.addEventListener(Event.ENTER_FRAME,frameHandle);
    }
    
    //创建天
    private function createSky():void{
      var shape:Shape = new Shape;
      shape.graphics.beginFill(0x6699cc,1);
      shape.graphics.drawRect(0,0,400,250);
      addChild(shape);
    }
    
    //创建陆地
    private function createLand():void{
      var shape:Shape = new Shape;
      shape.graphics.beginFill(0x002222,1);
      shape.graphics.drawRect(0,250,400,150);
      addChild(shape);
    }
    
    //麦克风活跃处理
    private function micActivityHandle(e:ActivityEvent):void{
      if(e.activating && intervalValue == 0){
        intervalValue = mic.activityLevel / 5;
      }
    }
    
    //持续处理
    private function frameHandle(e:Event):void{
      if(intervalValue == 0) return;
      main.y -= intervalValue;
      intervalValue --;
      if(intervalValue == 0) intervalValue -= 1;
      
      //落地
      var min:int = - minHigh;
      if(min < main.y){
        main.y = min;
        intervalValue = 0;
      }
    }
  }
}

[最后修改由 sunbright, 于 2010-05-25 14:24:29]
评论Feed 评论Feed: http://www.xiaos8.com/feed.asp?q=comment&id=568
怎么一页才显示这么点文章?点快速检索查看更多的文章: 显示全部 | 评论: 1 | 排序 | 观看的: 673
DUMO*
[ 2010-07-19 11:39:53 ]
强大,我AS就会点,呢些看不懂。恼火呀。
QQ:360285958

发表
表情图标
[表情01] [表情02] [表情03] [表情04] [表情05] [表情06] [表情07] [表情08] [表情09] [表情10] [表情11] [表情12] [表情13] [表情14] [表情15] [表情16] [表情17] [表情18] [表情19] [表情20] [表情21] [表情22] [表情23] [表情24]
UBB代码
转换链接
表情图标
悄悄话
昵称:   验证码: *
 
快速浏览
类别
标题
评论/流量
日期