Как изменить громкость звука с помощью клавиатуры? - PullRequest
0 голосов
/ 04 декабря 2009

Как увеличить / уменьшить громкость звука при нажатии клавиш в ActionScript 3.0

Ответы [ 4 ]

5 голосов
/ 04 декабря 2009
private var sound:Sound;
private var channel:SoundChannel;
private const INCREMENT:Number = 0.2;//change it as you like

sound = new Sound();
sound.addEventListener(Event.COMPLETE, onLoad);
sound.load(new URLRequest("song.mp3"));

function onLoad(e:Event):void
{
   channel = sound.play();
   if(stage)
   {
       stage.addEventListener(KeyboardEvent.KEY_UP, onKey);
   }
   else
       trace("call this from a display object on stage");
}
function onKey(e:KeyboardEvent):void
{
    var tr:SoundTransform = channel.soundTransform;
    var vol:Number = tr.volume;
    if(e.keyCode == Keyboard.UP)
       vol += INCREMENT;
    else if(e.keyCode == Keyboard.DOWN)
       vol -= INCREMENT;
    if(vol < 0)//volume ranges from 0 to 1
        vol = 0;
    if(vol > 1)
        vol = 1;
    tr.volume = vol;
    channel.soundTransform = tr;
}
1 голос
/ 04 декабря 2009

Когда вы вызываете метод play () для звукового объекта, он возвращает SoundChannel, на котором он воспроизводится.

var channel:SoundChannel = soundObject.play();

Затем вы можете установить громкость этого звука, используя свойство soundTransform SoundChannel.

channel.soundTransform = new SoundTransform(0.5); // Sets the volume to 50%

Чаще вы хотите контролировать громкость ВСЕХ звуков, воспроизводимых в вашем фильме. Это можно сделать, установив свойство soundTransform класса SoundMixer.

SoundMixer.soundTransform = new SoundTransform(0.5); // Sets the global volume to 50%
1 голос
/ 04 декабря 2009
package {
 import flash.display.Sprite;
 import flash.events.KeyboardEvent;
 import flash.media.Sound;
 import flash.media.SoundChannel;
 import flash.media.SoundTransform;
 import flash.net.URLRequest;
 import flash.ui.Keyboard;

 public class Main extends Sprite
 {
  public function Main()
  {
   sound = new Sound(new URLRequest("http://assets.flashstall.com/mp3/Estelle - American Boy (sample).mp3"));
   soundChannel = sound.play();

   stage.addEventListener(KeyboardEvent.KEY_UP, stage_onKeyUp);
  }

  private const INCREMENT_STEP:Number = .1;

  private var sound:Sound;
  private var soundChannel:SoundChannel;
  private var soundTransform_:SoundTransform = new SoundTransform();

  private function stage_onKeyUp(e:KeyboardEvent):void
  {
   if(!soundChannel) return;

   switch(e.keyCode)
   {
    case Keyboard.UP:
     if(soundChannel.soundTransform.volume >= 1) break;
     soundTransform_.volume = soundChannel.soundTransform.volume + INCREMENT_STEP;
     soundChannel.soundTransform = soundTransform_;
     break;

    case Keyboard.DOWN:
     if(soundChannel.soundTransform.volume <= 0) break;
     soundTransform_.volume = soundChannel.soundTransform.volume - INCREMENT_STEP;
     soundChannel.soundTransform = soundTransform_;
     break;
   }
  }
 }
}

Это должно сделать это.

0 голосов
/ 04 декабря 2009

Вам нужно будет использовать слушателей для прослушивания KeyboardEvents, например

http://www.bensilvis.com/?p=146

А для изменения громкости вам потребуется использовать SoundTransform в SoundChannel, возвращаемом при воспроизведении звука, например,

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/media/SoundTransform.html#includeExamplesSummary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...