![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ゲスト | Åê¹ÆNo.10591 投稿日時: 2004-9-5 23:25 |
音量の取得方法 お世話になります。erikoです。
閲覧者が音量をミュートしていないかどうかを調べたいと思っています。 flashで直接ミュートされているかを調べる方法は出来なさそうだったので(そういうことも出来ます?)、サウンドの音量で調べようと思いActionScript辞典を参考に以下のscriptを記述しました。 メインタイムライン1フレーム目
2フレーム目
この再生結果、サウンドは流れるのですが、音量を増減してもミュートにしても全てtraceは100となってしまいます。 ![]() これはいったい・・? 何か記述方法、設定方法に間違いがあるのでしょうか? サンプルflaファイルはこちら(解決!削除☆)です。 初歩的な質問ですがよろしくお願いします。 |
|
ゲスト | Åê¹ÆNo.10594 投稿日時: 2004-9-6 0:37 |
Re: 音量の取得方法 どうもこんにちは。
結論から言うとtraceがすべて100になるのは正しい動作です。 getVolume();はあくまでそれぞれのサウンドオブジェクトの再生音量を調べるものであって、クライアントのPCの音量を調べるものではないからです。soundObj.start(0, 100);でサウンドオブジェクトの音量を100に設定しているため、traceしても100しか返ってきません。 ミュートされているかどうかは各PCのOSまたはハードに依存するものですから、質問にも書かれているように調べる方法は無いと思います。 |
|
ゲスト | Åê¹ÆNo.10597 投稿日時: 2004-9-6 11:53 |
Re: 音量の取得方法 keitaさん、お返事いただきありがとうございました。
え?え?そうなんですか??てっきりクライアント側で流れている音量を調べてそのボリュームの設定etcをできると思っていました。 ![]() ミュートされている時は0またはundefinedが返ってきてそれを判別すればいいのかなぁ・・と。(^^;;
えっと、この100はループ回数の指定ですよね?0秒目から最後まで再生し100回繰り返す。 でも、そのサウンドオブジェクトはめいいっぱい再生されてますよ?で、traceすると100が返ってくるということだったのですよね・・
そうなんですか、どうにか他に調べる方法ってないものでしょうか・・ ![]() ![]() |
|
野中文雄 | Åê¹ÆNo.10599 投稿日時: 2004-9-6 14:10 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
![]() ![]() ![]() |
Re: 音量の取得方法 Soundインスタンスは、タイムラインをターゲットとして、MovieClip単位でサウンドをコントロールします。
つまり、システムの音量を直接制御するものではありえません。その場合には、すべてのサウンドが、一括で変更されてしまうはずです。すると、サウンドごとの調整は、不可能になります。 引用: erikoさんは書きました: Soundインスタンスは、ユーザーがシステムで設定した音量を100%として、そのなかでボリュームをコントロールします。そのおかげで、音量を絞ったユーザーのマシンで、いきなり大音量のサウンドを鳴らすといった不作法をせずに済む訳です。 引用: でも、そのサウンドオブジェクトはめいいっぱい再生されてますよ?で、traceすると100が返ってくるということだったのですよね・・ DirectorではsoundChannelObjRef.volumeプロパティが、マシンの音量をベースに0?255までの範囲でボリュームをコントロールします。 他方、_sound.soundLevelというプロパティは、システムの音量を制御します。これに相当するプロパティ/メソッドは、Flashには存在しません。システムの設定に直接アクセスすることは、Flashの場合意図的に避けている可能性があります。 引用: 引用: |
HapHands | Åê¹ÆNo.10604 投稿日時: 2004-9-6 15:27 |
半人前 ![]() ![]() 居住地: 東京都新宿区 投稿: 47
使用環境:
Flash: ![]() ![]() OS: ![]() ![]() CPU: Pentium M 1.70GHz RAM: 1.0GB |
Re: 音量の取得方法 便乗かつFlashから離れていってしまいますが疑問が発生しました。
引用:
私もDirectorを使うので、DirectorのsoudLevelと組み合わせてFlashにシステムの音量設定を渡せないかな?と考えました(実用性はともかく)。 そこでDirectorMXのthe soundLevelやDirectorMX2004の_sound.soundLevelを試してみたのですが...(WinXPのみ)。 私は[コントロールパネル]?[サウンドとオーディオデバイス]の設定(でアクセスできる設定)にアクセスできるものと思っていたのですが、そうではないのでしょうか ![]() コンパネで音量を0(ミュートのチェック無し)にしてもsoundLevelは7を返したり、soundLevelを変更してもコンパネの設定は変化しません。 ミュートのチェックを入れたからといってsoundLevelが0を返すこともないようです。 soundLevelってWinではどの設定にアクセスしているんでしょう?? #Directorの話でスミマセン?
|
野中文雄 | Åê¹ÆNo.10607 投稿日時: 2004-9-6 16:50 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
![]() ![]() ![]() |
Re: 音量の取得方法 本来は、システムのサウンドにアクセスでき、その結果が[コントロールパネル]に反映されるべきでしょうね。Director MX/Windows XP (SP1)で試したところ(まだMX 2004はインストールしていないので)、beep音も変わりませんでした。_sound.soundDeviceプロパティを"MacroMix"に変えたら、音量は変化しました([コントロールパネル]は変わらず)。
結論として、「Windowsではプロジェクタからのボリュームコントロールはしない」方がよさそうです。_sound.soundLevelは使わないということですね。 ![]() Macintoshでは、コントロール可能で、[システム環境設定]にも反映されます。しかし、Mac OS X.3.5で、0はミュートにはなるものの、7が最大にならず、最大時の値として10が返ります(もちろん、10はプロパティに設定できません)。Macも怪しいというべきでしょう。 引用: はやし たくやさんは書きました: どうしてもシステムのサウンドをコントロールする必要があるときは、Buddy APIのbaSetVolume()メソッドを使うのが一番です。[コントロールパネル]にも、反映されました。 |
HapHands | Åê¹ÆNo.10608 投稿日時: 2004-9-6 17:02 |
半人前 ![]() ![]() 居住地: 東京都新宿区 投稿: 47
使用環境:
Flash: ![]() ![]() OS: ![]() ![]() CPU: Pentium M 1.70GHz RAM: 1.0GB |
Re: 音量の取得方法 検証ありがとうございます?。
引用:
なるほど?。設定はまだしも、取得はできて欲しいですね。 引用:
あらためてお礼申し上げます。ありがとうございました。
|
ゲスト | Åê¹ÆNo.10614 投稿日時: 2004-9-6 20:06 |
Re: 音量の取得方法 野中さん、はやしさん、情報をありがとうございます。とても参考になりました。
そうそう。システムボリュームをコントロールしたいわけではないのですよ。ミュートしてるかどうかだけが知りたかったのだけどなぁ ![]() |
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |