Actionscript 3 如何扩大AS3中的声波?

Actionscript 3 如何扩大AS3中的声波?,actionscript-3,audio,mixer,Actionscript 3,Audio,Mixer,我正在实现这个用于绘制声波的代码。它位于adobe livedocs中。我的问题是如何扩大声波?例如,我希望它是655像素。我可以改变它来绘制不同的通道,也可以改变图纸的高度,但找不到如何改变整个图纸的宽度 你知道怎么做吗 谢谢 package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.Event; import flash.med

我正在实现这个用于绘制声波的代码。它位于adobe livedocs中。我的问题是如何扩大声波?例如,我希望它是655像素。我可以改变它来绘制不同的通道,也可以改变图纸的高度,但找不到如何改变整个图纸的宽度

你知道怎么做吗

谢谢

  package {
     import flash.display.Sprite;
     import flash.display.Graphics;
     import flash.events.Event;
     import flash.media.Sound;
     import flash.media.SoundChannel;
      import flash.media.SoundMixer;
     import flash.net.URLRequest;
      import flash.utils.ByteArray;
     import flash.text.TextField;

    public class SoundMixer_computeSpectrumExample extends Sprite {

        public function SoundMixer_computeSpectrumExample() {
           var snd:Sound = new Sound();
           var req:URLRequest = new URLRequest("Song1.mp3");
           snd.load(req);

           var channel:SoundChannel;
           channel = snd.play();
           addEventListener(Event.ENTER_FRAME, onEnterFrame);
           channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
        }

       private function onEnterFrame(event:Event):void {
           var bytes:ByteArray = new ByteArray();
           const PLOT_HEIGHT:int = 25;
           const CHANNEL_LENGTH:int = 256;

           SoundMixer.computeSpectrum(bytes, false, 0);

           var g:Graphics = this.graphics;

           g.clear();

           g.lineStyle(0, 0x6600CC);
           g.beginFill(0x6600CC);
            g.moveTo(0, PLOT_HEIGHT);

           var n:Number = 0;

           for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
               n = (bytes.readFloat() * PLOT_HEIGHT);
               g.lineTo(i * 2, PLOT_HEIGHT - n);
           }

           g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
           g.endFill();

           g.lineStyle(0, 0xCC0066);
           g.beginFill(0xCC0066, 0.5);
           g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);

           for (i = CHANNEL_LENGTH; i > 0; i--) {
               n = (bytes.readFloat() * PLOT_HEIGHT);
               g.lineTo(i * 2, PLOT_HEIGHT - n);
           }

           g.lineTo(0, PLOT_HEIGHT);
           g.endFill();
        }

         private function onPlaybackComplete(event:Event):void {
             removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
     }
 }
包{
导入flash.display.Sprite;
导入flash.display.Graphics;
导入flash.events.Event;
导入flash.media.Sound;
导入flash.media.SoundChannel;
导入flash.media.SoundMixer;
导入flash.net.URLRequest;
导入flash.utils.ByteArray;
导入flash.text.TextField;
公共类SoundMixer_ComputeSpectrum示例扩展了Sprite{
公共函数SoundMixer_computeSpectrumExample(){
var snd:Sound=新声音();
var-req:URLRequest=newurlrequest(“Song1.mp3”);
snd.负载(需求);
var通道:声音通道;
频道=snd.play();
addEventListener(Event.ENTER_FRAME,onEnterFrame);
channel.addEventListener(Event.SOUND_COMPLETE,onPlaybackComplete);
}
私有函数onEnterFrame(事件:事件):void{
变量字节:ByteArray=newbytearray();
施工图高度:int=25;
常量通道长度:int=256;
SoundMixer.computeSpectrum(字节,false,0);
var g:Graphics=this.Graphics;
g、 清除();
g、 线型(0,0x6600CC);
g、 beginll(0x6600CC);
g、 移动到(0,绘图高度);
变量n:数值=0;
对于(变量i:int=0;i0;i--){
n=(bytes.readFloat()*绘图高度);
g、 lineTo(i*2,绘图高度-n);
}
g、 lineTo(0,绘图高度);
g、 endFill();
}
私有函数onPlaybackComplete(事件:事件):void{
removeEventListener(Event.ENTER_FRAME,onEnterFrame);
}
}
}

将线路中的x系数更改为(x,y)呼叫

例如,更改:

g.lineTo(i * 2, PLOT_HEIGHT - n);
例如:

var xfactor:Number = 655/256;
g.lineTo(i * xfactor, PLOT_HEIGHT - n);
因为xfactor是固定的,所以在进入循环(不在循环内)之前计算它(