2007/07/17 | 燃烧吧火焰
类别(做生活) | 评论(13) | 阅读(263) | 发表于 15:11

主要使用了BitmapData,Matrix,BlurFilter,graphics,其中有一个tempc=(255-i) << 16 ^ i << 8 ^ 0不用理会,只是产生个颜色列表,产生颜色的方法很多,实在不行可以手写个array调用,其他都是帮助中简单脚本。
例子如下:

代码如下:

package {
  import flash.display.Sprite;
  import flash.media.Sound;
  import flash.media.SoundMixer;
  import flash.utils.ByteArray;
  import flash.events.Event;
  import flash.net.URLRequest;
  import flash.display.Shape;
  import flash.display.Graphics;
  import flash.display.Bitmap;
  import flash.display.BitmapData;
  import flash.geom.Matrix;
  import flash.geom.Point;
  import flash.geom.Rectangle;
  import flash.filters.BitmapFilterQuality;
  import flash.filters.BlurFilter;
  public class wave extends Sprite {
    var sd:Sound = new Sound();
    var ba:ByteArray = new ByteArray();
    var wm:Shape=new Shape();
    var trans:Shape=new Shape();
    var bmp:BitmapData = new BitmapData(400, 500, false, 0x000000);
    var buffer:BitmapData = new BitmapData(400, 500, false, 0x000000);
    var blur:BlurFilter = new BlurFilter(10,10,2);
    var rect:Rectangle = new Rectangle(0, 0, 400, 500);
    var pt:Point = new Point(0, 0);
    var stagepic:Bitmap;
    var trans_m:Matrix=new Matrix(1.001,0.002,0.002,0.99,-0.01,-5);
    public function wave() {
      sd.load(new URLRequest("http://blog.5d.cn/02.mp3"));
      sd.play(0,1000);
      trans.graphics.beginFill(0x0000000,0.08);
      trans.graphics.drawRoundRect(0, 0, 400, 500, 0);
      trans.graphics.endFill();
      stagepic =new Bitmap(bmp);
      addChild(stagepic);
      addEventListener(Event.ENTER_FRAME,onEnterFrame);
    }
    private function onEnterFrame(event:Event):void {
      SoundMixer.computeSpectrum(ba,true,0);
      wm.graphics.clear();
      for (var i:int=0; i < 512; i++) {
        var tempc=(255-i) << 16 ^ i << 8 ^ 0;
        var tempj=ba.readFloat()*150;
        wm.graphics.lineStyle(6,tempc,0.3);
        if (i<255) {
          wm.graphics.moveTo(200,450-i);
          wm.graphics.lineTo(200-tempj,450-i);
        } else {
          wm.graphics.moveTo(200,706-i);
          wm.graphics.lineTo(200+tempj,706-i);
        }
      }
      bmp.draw(trans, null, null, "multiply");
      bmp.draw(wm, null, null, "add");
      buffer.draw(bmp);
      buffer.applyFilter(buffer, rect, pt, blur);
      bmp.draw(buffer,trans_m);
    }
  }
}

0

评论Comments

日志分类
首页[67]
说故事[8]
看世界[15]
冶情操[9]
贴图片[15]
做生活[20]