flash.media
public final class SoundTransform
继承SoundTransform Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

SoundTransform 类包含音量和平移的属性。

查看示例

另请参见

flash.display.SimpleButton.soundTransform
flash.display.Sprite.soundTransform
flash.media.Microphone.soundTransform
flash.media.SoundChannel.soundTransform
flash.media.SoundMixer.soundTransform
flash.net.NetStream.soundTransform


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  leftToLeft : Number
从 0(无)至 1(全部)的值,指定了左输入在左扬声器里播放的量。
SoundTransform
  leftToRight : Number
从 0(无)至 1(全部)的值,指定了左输入在右扬声器里播放的量。
SoundTransform
  pan : Number
声音从左到右的平移,范围从 -1(左侧最大平移)至 1(右侧最大平移)。
SoundTransform
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  rightToLeft : Number
从 0(无)至 1(全部)的值,指定了右输入在左扬声器里播放的量。
SoundTransform
  rightToRight : Number
从 0(无)至 1(全部)的值,指定了右输入在右扬声器里播放的量。
SoundTransform
  volume : Number
音量范围从 0(静音)至 1(最大音量)。
SoundTransform
公共方法
 方法定义方
  
SoundTransform(vol:Number = 1, panning:Number = 0)
创建 SoundTransform 对象。
SoundTransform
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
leftToLeft属性
leftToLeft:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从 0(无)至 1(全部)的值,指定了左输入在左扬声器里播放的量。



实现
    public function get leftToLeft():Number
    public function set leftToLeft(value:Number):void
leftToRight属性 
leftToRight:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从 0(无)至 1(全部)的值,指定了左输入在右扬声器里播放的量。



实现
    public function get leftToRight():Number
    public function set leftToRight(value:Number):void
pan属性 
pan:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

声音从左到右的平移,范围从 -1(左侧最大平移)至 1(右侧最大平移)。值 0 表示没有平移(在左侧和右侧之间平衡居中)。



实现
    public function get pan():Number
    public function set pan(value:Number):void
rightToLeft属性 
rightToLeft:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从 0(无)至 1(全部)的值,指定了右输入在左扬声器里播放的量。



实现
    public function get rightToLeft():Number
    public function set rightToLeft(value:Number):void
rightToRight属性 
rightToRight:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

从 0(无)至 1(全部)的值,指定了右输入在右扬声器里播放的量。



实现
    public function get rightToRight():Number
    public function set rightToRight(value:Number):void
volume属性 
volume:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

音量范围从 0(静音)至 1(最大音量)。



实现
    public function get volume():Number
    public function set volume(value:Number):void
构造函数详细信息
SoundTransform()构造函数
public function SoundTransform(vol:Number = 1, panning:Number = 0)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建 SoundTransform 对象。

参数
vol:Number (default = 1) — 音量范围从 0(静音)至 1(最大音量)。
 
panning:Number (default = 0) — 声音从左到右的平移,范围从 -1(左侧最大平移)至 1(右侧最大平移)。值 0 表示没有平移(居中)。

示例

在下面的示例中,仅从右声道中播放声音,并将音量设置为 50%。

在构造函数中,加载了声音并将其分配给一个声道 (channel)。还会创建一个 SoundTranform 对象 (transform)。它的第一个参数将音量设置为 50%(范围从 0.0 到 1.0)。它的第二个参数设置平移。在本示例中,将平移设置为 1.0,这表示仅从右扬声器中播放声音。为了使这些设置生效,将 transform SoundTranform 对象分配给了声道的 souundTransform 属性。

注意:仅为本示例编写了有限的错误处理代码。

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundTransform;
    import flash.events.IOErrorEvent;

    public class SoundTransform_constructorExample extends Sprite
    {
        public function SoundTransform_constructorExample() {
            var mySound:Sound = new Sound();
            var url:URLRequest = new URLRequest("mySound.mp3");
            var channel:SoundChannel;
            var transform:SoundTransform = new SoundTransform(0.5, 1.0);

            mySound.load(url);    
            channel = mySound.play();
            channel.soundTransform = transform;

            mySound.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
        }

        private function errorHandler(errorEvent:IOErrorEvent):void {
            trace("The sound could not be loaded: " + errorEvent.text);
        }
    }
}
示例 如何使用示例
SoundTransformExample.as

以下示例将加载并播放 MP3 文件。当播放 MP3 文件时,移动鼠标;将鼠标移到舞台上时,音量和平移会发生变化。若要运行此示例,请将一个名为 MySound.mp3 的文件放在 SWF 文件所在的同一目录中。
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundTransform;
    import flash.net.URLRequest;
    import flash.utils.Timer;

    public class SoundTransformExample extends Sprite {
        private var url:String = "MySound.mp3";
        private var soundFactory:Sound;
        private var channel:SoundChannel;
        private var positionTimer:Timer;

        public function SoundTransformExample() {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            var request:URLRequest = new URLRequest(url);
            soundFactory = new Sound();
            soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soundFactory.load(request);
            channel = soundFactory.play();
            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
        }

        private function ioErrorHandler(event:Event):void {
            trace("ioErrorHandler: " + event);
        }

        private function setPan(pan:Number):void {
            trace("setPan: " + pan.toFixed(2));
            var transform:SoundTransform = channel.soundTransform;
            transform.pan = pan;
            channel.soundTransform = transform;
        }

        private function setVolume(volume:Number):void {
            trace("setVolume: " + volume.toFixed(2));
            var transform:SoundTransform = channel.soundTransform;
            transform.volume = volume;
            channel.soundTransform = transform;
        }

        private function mouseMoveHandler(event:MouseEvent):void {
            var halfStage:uint = Math.floor(stage.stageWidth / 2);
            var xPos:uint = event.stageX;
            var yPos:uint = event.stageY;
            var value:Number;
            var pan:Number;

            if (xPos > halfStage) {
                value = xPos / halfStage;
                pan = value - 1;
            } else if (xPos < halfStage) {
                value = (xPos - halfStage) / halfStage;
                pan = value;
            } else {
                pan = 0;
            }

            var volume:Number = 1 - (yPos / stage.stageHeight);

            setVolume(volume);
            setPan(pan);
            
        }
    }
}