2016-06-29 4 views
-1

誰かがループで再生している音楽の音量をどのように変更するのですか?例えば、私はゲームを作っていて、特定のフレームで音楽レベル(music.wav)を音量の半分に減らしたいと思っています。オーディオループの音量を調整する方法は?

どのようにして誰かがAS3でこれを行うことができましたか?

+0

関連:[音の音量を変更する方法キーボード入力を使用して?](http://stackoverflow.com/questions/1846829/how-to-change-the-volume-of-a-sound-using-keyboard-input) –

+0

@JonnyHenlyしかし、フレームロードイベント? – okay14

+0

私はリンクされた質問、特に 'function onKey(...):void {...}'コードの答えのコードを見ましたか?私はそれがそのコードに似ていると信じています。 –

答えて

1

"loop"という言葉は混乱しています。私は、これはあなたがループによって何を意味するかではないことではなく、あなたがMovieClipまたはメインが好きだろうと推測

for (var i:int = 0; i < 10; i++) 
{ 
    //do stuff 10 times 
} 

:プログラミングでは、ループは、通常、次のようになりますループ「のため」のものを指しますタイムラインをnフレームの末尾にあるSoundオブジェクトの音量を下げます。それとも、音楽そのものがループしているという意味ですか?うまくいけば、よく書かれた質問をする価値があることが分かります。それは言われている..

私はこれを試したことはありませんが、私の参考書(Lott、Schall & PetersのActionScript 3.0クックブック)に従って、SoundTransformオブジェクトを使用する必要がありますサウンドを設定します。今

var _sound:Sound = new Sound(music.wav); // creates a Sound object which has no internal volume control 
var channel:SoundChannel = _sound.play(); // creates a SoundChannel which has a soundTransform property 
var transform:SoundTransform = new SoundTransform(); // SoundTransform objects have a property called "volume". This is what you need to change volume. 

あなたのループ内(または使用しているフレームイベントに)次の操作を行います:これを試してみてください

transform.volume *= 0.9; // or whatever factor you want to have it decrease 
//transform.volume /= 1.1; // or this if you prefer. 
channel.soundTransform = transform; // 

ですから、ボリュームは、この増分量だけ減少したいいつでも、これを実行しますコードのビット。もちろん、あなたが設定した変数がそれらを参照しているコードでアクセス可能であることを確認する必要があります。これを行うことを念頭に置く1つの方法は、機能である。

private function soundDiminish(st:SoundTransform, c:SoundChannel, factor:Number = 0.9):void 
{ 
    st.volume *= factor; 
    c.soundTransform = st; 
} 

ここでボリュームを小さくしたい場合は、soundDiminish関数を呼び出してください。

たぶん、あなたのフレームイベントは次のようになります。あなたが唯一の20フレーム毎に、この関数が呼ばれるようにしたい場合は

function onLoadFrame(fe:Event):void 
{ 
    soundDiminish(transform, channel); // 3rd parameter optional 
} 

function onLoadFrame(fe:Event):void 
{ 
    // this is a counter that will count up each time this frame event happens 
    frameCount ++; 
    if (frameCount >= 20) 
    { 
     soundDiminish(transform, channel); // 3rd parameter optional 
     frameCount = 0; // reset the frame counter 
    } 
} 
+1

ありがとうございました!とても多くの情報!とても知識豊富!私はあなたに挨拶します、良い先生! – okay14

+1

あなたは大歓迎です。あなたはここに戻って、他の人たちと同じ質問を平時に返すことになるでしょう。 –

関連する問題