Actionscript 3 如何扩大AS3中的声波?
我正在实现这个用于绘制声波的代码。它位于adobe livedocs中。我的问题是如何扩大声波?例如,我希望它是655像素。我可以改变它来绘制不同的通道,也可以改变图纸的高度,但找不到如何改变整个图纸的宽度 你知道怎么做吗 谢谢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
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是固定的,所以在进入循环(不在循环内)之前计算它(