feb19.jp blog - life is creative!

AS3で音のボリュームやパンを操作する

ブックマークに追加する tags:   

AS3で音のボリュームやパンを操作する

AS3で音のボリュームやパンを変更するには意外とめんどくさくて、一回SoundTransformを抜き取って、変更して、それをもう一度代入するといった方法をとらないといけません。

しかも、SpriteやMovieClip、SoundChannelやNetStream、そしてSoundMixerなど、場合によっては様々なインスタンスに対するsoundTransformを考えていかなければなりません。

ならば、どのソースにも対応できて、getter/setterでボリュームやパンを変更するためのプロパティを持つクラスを作ればとても便利です。

2008.11.21更新!5行目、6行目、型指定しました。

package {
	import flash.media.SoundTransform;
	public class SoundUtils {
		private var st:SoundTransform;
		private var source:Object;
		public function SoundUtils(src:Object) {
			source = src;
		}
		public function set volume(num:Number):void {
			getSoundTransform().volume = num;
			source.soundTransform = getSoundTransform();
		}
		public function get volume():Number {
			return getSoundTransform().volume;
		}
		public function set pan(num:Number):void {
			getSoundTransform().pan = num;
			source.soundTransform = getSoundTransform();
		}
		public function get pan():Number {
			return getSoundTransform().pan;
		}
		private function getSoundTransform():SoundTransform {
			if (!st) {
				st = source.soundTransform;
			}
			return st;
		}
	}
}

使いかたはこんな感じです。

var su = new SoundUtils(this.root);
su.volume = 0.4;

root以下に含まれるDisplayObjectに配置されている音の音量を変更します。

var su = new SoundUtils(SoundMixer);
su.volume = 0;

SWFのマスターボリュームを0に変更します。

ソースとなるインスタンスを引数に指定して、SoundUtilsインスタンスを生成します。で、そいつのプロパティ、.volumeと.panをいじればOKっていう感じです。

.volumeは、0から1の値を、.panは、-1から1の値を取ります。あ、AS2のノリで.volume = 100とかにすると、えらいことになりますので要注意ですよ(自分はよく.volume = 100とかやってしまって、毎度死にかけてます 苦笑)。

ソースにできるインスタンスはsoundTransformを持っているオブジェクト、つまりSoundChannelやSoundMixer、Sprite、MovieClip、Loader.content、SimpleButton、NetStream、Microphone、VideoPlayer、FLVPlayback、他に使えます。

しかも、プロパティなので、TweenとかTweenerで簡単にトゥイーンできます。例えば、

var su = new SoundUtils(SoundMixer);
Tweener.addTween(su, {time:3, transition:"easenone", volume:0});

3秒かけてマスターボリュームがフェードアウトします。

とかね。

個人的にこれはかなり便利だと思います。自作フレームワークのレギュラー入りですね、これは。

2008年02月03日03:03

Webデザインブログ

「AS3で音のボリュームやパンを操作する」の関連エントリー

 iTunes Store(Japan)

コメント (16)

「as3 Sound」でググってこちらのクラスにたどり着きました。使わせていただきましたが、最高に便利です!ありがとうございました!

hiro:

私も「actionscript3.0 サウンド ボリューム」で検索してこちらにたどり着きました。
初心者の私にとって、非常に勉強になりました。
ありがとうございました。

Никогда ещё не было так плохо, чтобы не было ещё хуже!

Женщина может быть загадочной, мужчина — только непонятым…

Странные существа люди: собираются в семьи, племена, нации, государства и при этом мечтают о свободе.

Женщина может простить все, кроме невнимания к себе…

Если мужчина долго-долго смотрит тебе в глаза — можешь быть уверена: все остальное он уже осмотрел.

Исключительно русское словосочетание: да нет.

Человек как роман: до самой последней страницы не знаешь, чем кончится. Иначе не стоило бы и читать. (Е. Замятин)

Ты ни в чём не виноват. Не казни себя! Не оставляй палача без работы.

Лучшее лекарство для человека — это другой человек.

Тост: Кто лежит — тот не падает. Падает тот, кто бежит. Выпьем же за бегущих!

Если ты подаришь другому человеку любовь, она вернется к тебе умноженной тысячекратно (Артур Трэйси).

Особенности национальной работы: чем больше сделаешь сегодня, тем больше переделаешь завтра.

Извините что а на самом деле мультики : ) .

「as3 音量」で検索してこちらにたどり着きました。
大変便利ですね、Tweenerで使えるのもすごいグッドです(^^)/
参考にさせていただきました

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/130

この一覧は、次のエントリーを参照しています: AS3で音のボリュームやパンを操作する:

» AS3:全体のサウンド制御 音量を0にする 送信元 FlashやWebにまつわるいろいろなこと
コンテンツ全体の音量(や音関連) の調整は AS2まででいうところの var mySound = new Sound(_root); mySound.se... [詳しくはこちら]

» feb19.jpさんのSoundUtilsクラスが便利すぎました。 送信元 blog.ipuheke.jp
AS3案件で、コンテンツ全体の音を制御する「ボリュームコントローラー」を作らなければ行けなくなって、AS3でSoundと言えば、「ボリューム変える度に、S... [詳しくはこちら]

» サウンドボリュームコントロールバーをつくってみる 送信元 akuapa blog
サウンドのボリュームコントロールバーをつくってみる。 参考にさせていただいたのは、 http://feb19.jp/blog/ar... [詳しくはこちら]

Navigation

古:続・Function.call()の使い道
新:3D物理演算エンジンWOWEngineとPapervision3D 2.0 GreatWhite
トップページ

Recently Entries
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...
Flash CS4 で Flex SDK (mx パッケージ、クラス) を使う
Flex 用のライブラリとかを見ると mx パッケージとか使われてい...
Flash CS5 を予習 ~Text Layout Framework (TLF) 編~
Text Layout Framework (TLF) を使って、F...