1

我试图使用(很成功)来使用这个声音类

http://www.mcfunkypants.com/2011/as3-pitch-shift-mp3/

示例代码如下所示。. .

public class Pitch_Shift_Example extends Sprite
    {

        [Embed(source='Pitch_Shift_Example.mp3')]
        private var engine_mp3 : Class;
        public var engine_loop:Pitch_Shift_MP3;

        public function Pitch_Shift_Example()
        {
            engine_loop = new Pitch_Shift_MP3(engine_mp3);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
            var someText:TextField = new TextField();
            someText.x = 200;
            someText.y = 0;
            someText.textColor = 0xFFFFFF;
            someText.selectable = false;
            someText.autoSize = TextFieldAutoSize.LEFT;
            someText.text = "Pitch Shift MP3 Demo by Breakdance McFunkypants\nMove your mouse to change the sample rate. Enjoy!";
            addChild(someText);
        }

        private function onMouseMove(event:MouseEvent):void
        {
            engine_loop.rate = (mouseX / stage.width) * 2;
        }

    }

现在让我感到困惑的是 engine_mp3 类是如何使用声音的。

第一行嵌入声音。
第二行创建了一个名为engine_mp3 的空类。
第 3 行创建了一个新的音调转换类,在第 7 行我们传递了(空的)engine_mp3 类。

基本上 engine_mp3 是如何获取 mp3 数据的?

任何帮助表示赞赏。

安迪

4

1 回答 1

2

它的工作原理是这样的:

您使用以下两行嵌入 mp3 文件:

Embed(source='Pitch_Shift_Example.mp3')]
private var engine_mp3 : Class;

这两条线一起工作。第一行是嵌入元数据,描述了它下面的行。它所做的是嵌入 mp3 文件并使其可以作为一个类访问。因此,您可以使用变量 name 引用这个嵌入的声音类engine_mp3

稍后在您的代码中,您实例化该类的一个新实例Pitch_Shift_MP3,并将引用传递给您的嵌入式声音类engine_mp3

engine_loop = new Pitch_Shift_MP3(engine_mp3);

音高转换类的构造函数期望一个类(表示声音)作为其单个参数。它必须在自己的代码中做的是engine_mp3通过这样做来实例化表示的类:

var instantiatedSound:Sound = new engine_mp3() as Sound;

希望这是有道理的!

于 2013-02-23T18:24:42.980 回答