1

ボタンが押されている間にサウンドを再生するコードを少し書き込もうとしていますが、ボタンが押されてサウンドが再生されている場合、サウンドは再生とオーバーラップではなく、一時停止されて再び再生されます。

これは私が持っているものです

    var sound:alarm = new alarm();
    var isPlaying:Boolean = false;

    public function Main()
    {
        button.addEventListener(MouseEvent.CLICK,playSound);
    }
    
    public function playSound(e:Event):void
    {
        if(isPlaying)sound.stop();
        sound.play();
        isPlaying=true;
    }

一見うまくいったように見えましたが、出力に次のように表示されました

TypeError: エラー #1006: stop は関数ではありません。
Main/playSound() で

TypeError: エラー #1006: stop は関数ではありません。
Main/playSound() で

stop は Sound クラスのメソッドではありませんが、明らかに機能します。これを実装する適切な方法は何ですか?また、このコードでは、最初のボタンクリック後に関数が入力されるたびに sound.stop() が呼び出されるため、使用できるより適切な条件があるかどうか疑問に思っていました。チェックインできる方法はありますか?サウンドが再生されているかどうかに関係なく、リアルタイムですか?

4

2 に答える 2

1

また、あなたの権利はクラスのメソッドではありませんが、クラスを使用せず、クラスを使用するplaySound(e:Event)必要があります(アラームクラスがサウンドクラスを拡張しない限り)。別のメモとして、Google を検索したところ、これがポップアップ表示されました。Flash Play/Pause SoundplaySound(e:MouseEvent);

stop()SoundSoundalarm

アップデート:

import flash.media.SoundChannel;
// Make sure to import the SoundChannel class

var sc:SoundChannel = new SoundChannel();
var sound:Sound = new alarm();
var isPlaying:Boolean = false;
var pausePos:Number = 0;

public function Main()
{
    button.addEventListener(MouseEvent.CLICK,playSound);
}

public function playSound(e:MouseEvent):void
{
    if(isPlaying) {
        pausePos = sc.position;
        sc.stop();
        isPlaying = false;
    } else {
        sc = sound.play(pausePos);
        isPlaying = true;
    }
}

このコードは機能するはずですが、テストしていないため、エラーが発生したり、目的の結果が得られない場合はお知らせください。できることを確認します。

于 2013-04-01T17:51:17.917 に答える
0

短い答え...わかりました、私からの完全な答え:)。サウンド オブジェクトを使用する代わりに、SoundChannel オブジェクトを試してください。ボリュームとバランスのコントロール、そして最も目立つ停止など、より多くのオプションを提供します。

ドキュメントは、それを使用するための十分な情報を提供する必要があります。比較的一般的です。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundChannel.html

于 2013-04-01T17:51:33.360 に答える