OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Flash:ボタンのサウンド(マウスオーバー時)設定について

  • すぐに回答を!
  • 質問No.246617
  • 閲覧数588
  • ありがとう数8
  • 気になる数0
  • 回答数8
  • コメント数0

お礼率 93% (15/16)

Flashのみでホームページを制作中なのですが、そこで一つ問題が生じてしまいました。
考えてもなかなか解決しません。どなたか教えてください。

メニューボタンが3つと、それを押すと各々3つのページ(3シーンに分けてあります)にジャンプするように作ってあります。
ボタンはどのページでも常に同じ位置にあります。

このボタンのマウスオーバーのフレームのみに「ボワ~ン」というサウンドをいれました。
マウスカーソルを3つのボタン上でなでるようにすると「ボワ~ンボワ~ンボワ~ン!」となる感じです。
サウンドに関してはそれだけでよかったのですが、ここからが分からなくなりました。

ボタンをクリックすると、希望のシーンにジャンプします。
それでも見た目上は、メニューボタン部分にはまったく変化がありません。
なのに、構造的にはシーンのジャンプが行われているわけで、
そうすると、ボタンをクリックしたまま、そのボタン上でマウスを動かさない状態でいると、
新しいページになった瞬間に、もう一度「ボワ~ン」と鳴ってしまうのです。

これを回避する方法をご存じの方、いらっしゃいませんか?

基本的にボタンのマウスオーバーフレームにサウンドを割り当てたのが、いけないのでしょうか?

アクションスクリプトのオブジェクト用のもので、なにか使えるものはないでしょうか?
たとえば、「オンマウスオーバー」の設定かなにかで、指定の範囲外から範囲内へのアクセスのみに反応して、
マウスカーソルがもともと範囲内に会った場合には無反応、といったようなアクションをご存じの方いませんか?

よろしくお願いします!
通報する
  • 回答数8
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル9

ベストアンサー率 48% (28/58)

補足

<シーン0>   <シーン1>   <シーン2>   <シーン3>

ボタン1      音なしボタン   ボタン1      ボタン1
ボタン2      ボタン2      音なしボタン   ボタン2
ボタン3      ボタン3      ボタン3      音なしボタン

グラフィックのところを「音なしボタン」にすればいいのです。

ボタンを複製して、「音あり」「音なし」の二つを用意することです。

このようなことをすれば、いろいろ応用できます。
お礼コメント
omokawa

お礼率 93% (15/16)

Qsansさん、ご丁寧にありがとうございます。

>ボタンを複製して、「音あり」「音なし」の二つを用意することです。

さっそく試してみました。
ただ、この方法だと、「シーン1」内の「ボタン1」が鳴らなくなってしまうのです。
たしかに、どこにも飛ばないボタンの音をなくすのは、ナビゲーション機能としては解りやすく、一石二鳥ではあるのですが…。
勝手な言い草ばかりですみません。
おっしゃるとおり、この方法をなんとか応用してみようと思います。
どんなふうに工夫できるか、なんだか楽しみになってきました。
本当にありがとうございました。
投稿日時 - 2002-04-05 00:04:09
-PR-
-PR-

その他の回答 (全7件)

  • 回答No.2
レベル10

ベストアンサー率 33% (35/104)

(全体-ボタン)の領域のオブジェクトを作って、その領域からmouseoutしたら音が鳴るようにしてみてはいかがでしょう。 場合によってはうまくいくはずです。 ...続きを読む
(全体-ボタン)の領域のオブジェクトを作って、その領域からmouseoutしたら音が鳴るようにしてみてはいかがでしょう。
場合によってはうまくいくはずです。
お礼コメント
omokawa

お礼率 93% (15/16)

amour7さん、こんばんは。
貴重なご意見ありがとうございます。
なるほど、逆にするわけですね。
…考えもおよびませんでした。
参考にさせていただきます。
これからも、よろしくお願いいたします。
投稿日時 - 2002-04-04 23:16:24
  • 回答No.1

こんばんは。 普通にクリック時(press)にするのが 最も簡単で早いと思うのですがいかがでしょう? それともロールオーバー時にどうしても鳴らしたいですか? ...続きを読む
こんばんは。
普通にクリック時(press)にするのが
最も簡単で早いと思うのですがいかがでしょう?
それともロールオーバー時にどうしても鳴らしたいですか?
補足コメント
omokawa

お礼率 93% (15/16)

こんばんは、humourさん。
「どうしても」そうしたいのです。(未熟者のわがままか…)

マウス位置の検知かなにか、そういったスクリプトでなら出来ますか?
どうでしょう?

なんでもいいです、アドバイスよろしくお願いします。
投稿日時 - 2002-04-04 01:12:09
  • 回答No.3
レベル9

ベストアンサー率 48% (28/58)

それは、別のシーンに移動しても同じところに同じボタンが配置されている からでしょうね? そのようなことをしたい場合、ボタンごとに別のシーンへリンクするような 形にしたいのであれば、同じボタンを配置したときに、ボタンを「編集」で グラフィックに代えてあげればいいでしょう。 <シーン0>   <シーン1>    <シーン2>    <シーン3> ボタン1      グラフィック   ボ ...続きを読む
それは、別のシーンに移動しても同じところに同じボタンが配置されている
からでしょうね?

そのようなことをしたい場合、ボタンごとに別のシーンへリンクするような
形にしたいのであれば、同じボタンを配置したときに、ボタンを「編集」で
グラフィックに代えてあげればいいでしょう。

<シーン0>   <シーン1>    <シーン2>    <シーン3>

ボタン1      グラフィック   ボタン1      ボタン1
ボタン2      ボタン2      グラフィック   ボタン2
ボタン3      ボタン3      ボタン3      グラフィック

意外と見栄えのよいフラッシュのホームページでも
このような、シンプルな構造で作成しているものも多いものです。

どうしてもスクリプトを使いたいという人は、それでもいいですが、
発想の仕方で、無理をする必要はありません。

また、なかなかこのようなテキストの意見交換の場では、教えるにも
限界がありますので。
お礼コメント
omokawa

お礼率 93% (15/16)

Qsansさん、こんばんは。
具体的なご回答ありがとうございます。
それから…

>発想の仕方で、無理をする必要はありません。

こういったご意見、本当にホッとします。
一人で考えていると、あれよあれよという間に煮詰まってしまい、挙げ句は「ポカーン」としてしまう始末なものですから。

参考にさせていただきます。
ありがとうございました。
投稿日時 - 2002-04-04 23:37:37
  • 回答No.5
レベル9

ベストアンサー率 48% (28/58)

またまた、回答しちゃいますが... omokawaさんの使用しているバージョンにもよりますが アクションスクリプトの中でテルターゲット(tell target)を 使えば、バリエーションは増えます。 比較的tell targetは、応用しやすいです。 ムービーの中にボタンを配置して利用するときなどです。 もちろんtell targetというぐらいですから、ムービーに「インス ...続きを読む
またまた、回答しちゃいますが...

omokawaさんの使用しているバージョンにもよりますが

アクションスクリプトの中でテルターゲット(tell target)を
使えば、バリエーションは増えます。

比較的tell targetは、応用しやすいです。

ムービーの中にボタンを配置して利用するときなどです。

もちろんtell targetというぐらいですから、ムービーに「インスタス名」
を付けなければなりません。

また、ムービーの中にムービーを入れたりするときに生じる「パス名=階層」
を理解する必要もあります。

たとえば、フォルダの中のさらにフォルダの中にあるファイル名を指定する
のと同じ原理です。

以上のように、簡単なアクションスクリプトは、抑えていて損は無いと思います。

また、あまり、シーン別に区切るということだけを考えずに、
同シーン上だけでも工夫すれば、収まります。

ひとつのレイヤー上で、初歩的なアクションスクリプト「goto」「stop」などを使って、キーフレームごとに、擬似シーンを作ることです。

<例>
。=空白のキーフレーム(フレームアクションを設定できます)

。<擬似シーン1>----。<擬似シーン2>---。<擬似シーン2>---。

といった感じですが...

以上、参考になれば幸いです。がんばってください。
お礼コメント
omokawa

お礼率 93% (15/16)

Qsansさん、こんにちは。

続けてのご回答、本当に感謝しています。
参考にさせていただきます。
ありがとうございました。
投稿日時 - 2002-04-09 17:21:03
  • 回答No.7
レベル11

ベストアンサー率 45% (106/233)

すみません、なぜか途中までしか入らなかったので、下の回答のつづきです。 [スクリプト表記](//以下は、コメントです。そのままペーストしても問題ないです) ●一番最初のフレームに koukaon = new Sound(_root);  koukaon.attachSound("piyon"); //サウンドの読み込み koukaon.setVolume(0); //サウ ...続きを読む
すみません、なぜか途中までしか入らなかったので、下の回答のつづきです。

[スクリプト表記](//以下は、コメントです。そのままペーストしても問題ないです)
●一番最初のフレームに
koukaon = new Sound(_root); 
koukaon.attachSound("piyon"); //サウンドの読み込み
koukaon.setVolume(0); //サウンドボリュームを無音に設定

●各シーンのボタンオブジェクトに
on(rollOut){
koukaon.setVolume(100); //カーソルがはずれたら、ボリュームを戻す
}
on(rollOver){
koukaon.start(); //カーソルがのったら音を鳴らす
}

あと、on(press) でシーンジャンプ(gotoAndPlay)を指定しておきます。これでオーケーです。
フレームに表記する分は、もし「シーン1を必ず最初に読み込む」ことが決まっているのなら、「シーン2、シーン3では最初の二行は省略」できます。サウンドファイルの読み込み指定なので。入れておいても問題はないです。

さて[欠点]ですが‥これはけっこう大きいかもしれません。「ロールアウトでボリュームが100に」なる設定なので、「一番最初の音が鳴らない」んです;(シーン1を、最初に読んだときです)同じ理由で、シーンがジャンプした時にカーソルがボタン上になかった場合も、いちど「ロールアウト」がおこるまで音が鳴りません。ボタン以外の操作でシーンがジャンプするような場合、そこにも「ボリュームを100に戻す」アクションを入れておいたほうがいいでしょう。
「シーン1の音が鳴らない」欠点は、たとえば、「最初の読み込みと、シーン2などからのジャンプとで、見かけが同じだがちがうフレームにジャンプする」よう設定する、という回避策が考えられます。「最初のシーン1」ではボタンの「ロールオーバー」に音を設定しておき、「次のシーン1」で、上のアクションをしこんだボタンをおいたフレームにユーザーを誘導するわけです。(ページにもよりますが‥‥)
あと、いくつかの音を使う場合、「最初のフレームですべてのサウンドをひとつひとつnew SoundとattachSoundで読み込んで、無音に設定する」「ボタンのロールアウトですべての音の設定を100に戻す」ことで簡単に対応できます。

hitTestなど使うともっと別の方法で可能かも、などとも思うのですが、ひとまずの回避策です。考え方の参考になればさいわいです。
お礼コメント
omokawa

お礼率 93% (15/16)

hokuto_dsさん、続けてこんにちは。

…と、書き込んでいる最中に、「回答 No.8」が舞い込んだという知らせ。
何はさておきそちらを読みたいので、いったん失礼します。

ありがとうございました。
投稿日時 - 2002-04-09 17:50:44
  • 回答No.6
レベル11

ベストアンサー率 45% (106/233)

アクションスクリプトを勉強しはじめたばかりの者なので、ちょっと足元はおぼつかないのですが、私が見つけたやり方を紹介します。(ただし、後述しますが、欠点があります)。フラッシュのバージョンは5です。 ざっとアクションの基本を説明すると、まず 「各シーンの最初のフレームで、ボタン効果音のサウンドボリュームを0(無音)にする」 → 「ボタンアクション  on(rollOut) でボタン効果音のサウンドボリュー ...続きを読む
アクションスクリプトを勉強しはじめたばかりの者なので、ちょっと足元はおぼつかないのですが、私が見つけたやり方を紹介します。(ただし、後述しますが、欠点があります)。フラッシュのバージョンは5です。
ざっとアクションの基本を説明すると、まず 「各シーンの最初のフレームで、ボタン効果音のサウンドボリュームを0(無音)にする」 → 「ボタンアクション  on(rollOut) でボタン効果音のサウンドボリュームを100(デフォルト)に設定する」です。これで、まずそのシーンにとんだ時、最初のフレームでボタンの音が無音になり、一度カーソルがはずれるまで鳴らなくなります。

サウンドをオブジェクトとして使うためには、サウンドに識別子をつけて書き出す必要があります。本などにも書いてありますが、「ライブラリ」パレットでそのサウンドを選び、パレットの横についているメニューから「リンケージ」を選択、でてきたボックスの「このシンボルを書きだす」をチェック、「識別子」に好きな名前(英数字)をいれて「OK」します。
  ☆私は「識別子」にとりあえず「piyon」という名前を使ったので、それでスクリプトを記述してあります。好きな名前に変えて使ってください。あと、「kouoaon」というのも、好きな名前にとりかえてください。

[スクリプト表記](//以下は、コメントです。そのままペーストしても問題ないです)
●一番最初のフレームに
koukaon = new Sound(_root); 
koukaon.attachSound("piyon"); //サウンドの読み込み
koukaon.setVolume(0); //サウンドボリュームを無音に設定

●各シーンのボタンオブジェクトに
on(rollOut){
koukaon.setVolume(100); //カーソルがはずれたら、ボリュームを戻す
}
on(rollOver){
koukaon.start(); //カーソルがのったら音を鳴らす
}
お礼コメント
omokawa

お礼率 93% (15/16)

hokuto_dsさん、こんにちは。

詳細なご回答、本当にありがとうございます。
参考にさせていただきます。
投稿日時 - 2002-04-09 17:39:46
  • 回答No.8
レベル11

ベストアンサー率 45% (106/233)

7、8の回答の追加です。 「一番最初のロールオーバーで、音が鳴らない」欠点の対処法を見つけましたので、追記します。 方法としては、「ボタンの後ろに、二回りくらい大きい透明ボタン(ヒット領域しか持たないボタン)を配置」し、その透明ボタンに「rollOverでサウンドボリュームを100」のアクションを仕込んでおきます。これで、ボタンにさわる前に透明ボタンのアクションが作動し、ボリュームが戻って音が鳴ります ...続きを読む
7、8の回答の追加です。
「一番最初のロールオーバーで、音が鳴らない」欠点の対処法を見つけましたので、追記します。
方法としては、「ボタンの後ろに、二回りくらい大きい透明ボタン(ヒット領域しか持たないボタン)を配置」し、その透明ボタンに「rollOverでサウンドボリュームを100」のアクションを仕込んでおきます。これで、ボタンにさわる前に透明ボタンのアクションが作動し、ボリュームが戻って音が鳴ります。

アクション全体は
「各シーンの最初のフレーム」に
koukaon=new Sound(_root);
koukaon.attachSound("piyon");
koukaon.setVolume(0);
(※サウンドを「リンケージ」であらかじめ書きだしておくのは、前の解説といっしょです。koukaonというのは、新しく作成するサウンドオブジェクトインスタンスの名前なので、任意の名前で可。"piyon"は、サウンドの「リンケージ」でつけた名前を入れてください)

「メインのボタン」に
on(rollOver){
koukaon.start();
}
(※もちろん、on(press)でシーンジャンプのアクションも入れます)

「透明ボタン」に
on(rollOver){
koukaon.setVolume(100);
}
これで、動作します。
注意点は、透明ボタンを必ず「メインボタンの後ろに」おくことと、透明ボタンとメインのボタンの大きさの差ですね。あんまり差(つまり、今回アクションを作動させるにあたっての、透明ボタンの実際のヒット領域)が小さいと、一瞬でカーソルが通りすぎてしまって作動しないこともあるみたいです。3回りくらい大きければだいじょうぶかとも思いますが、実際ためしてみてください。いろいろとかねあいもあると思いますので。
あと、ボタンふたつを新しいムービークリップの中に入れて、そのムービークリップに「フレームに割りあてるアクション」を割りあてて動かすこともできると思います。この場合、フレームにサウンドのアクションを記述せず、すべてそのムービークリップと、中のボタンで動くことになるので、構成としてはこっちがすっきりかも。
そのばあい、ムービークリップに割りあてるアクションは

onClipEvent(load){
koukaon=new Sound(this);
koukaon.attachSound("piyon");
koukaon.setVolume(0);
}
となります。new Soundが"this"を参照する点を注意してください。
ただ、なぜかこの方法をためしてみたところ、シーンをジャンプするためのボタンアクションがどうも動かない‥‥;;フレームジャンプは問題ないのに‥‥。。バグなのか、私の指定のしかたに問題があるのか、ほかのケースでも、フレームジャンプは問題ないのに、シーンジャンプになるとお願いもしてないような動きをするボタンがいる‥‥‥‥;;;
ので、このあたりは、使う場合は、おためしください。
お礼コメント
omokawa

お礼率 93% (15/16)

hokuto_dsさん、こんにちは。

ご親切な回答、本当に感謝します。
お教えいただいた一連の作業、まだ試してはいません(すみません…)が、これらは私にとって、とても貴重で重要なものです。
なんとも恐縮のほかはありません。

>シーンをジャンプするためのボタンアクションがどうも動かない‥‥

これは、もしかしたら、ムービークリップ内における、親タイムラインの認識方法に「シーン名」が存在しないからではないでしょうか?
「ラベル名」のみにするといいのかも…、試してみます。

それでは、hokuto_dsさん、本当にどうもありがとうございました。
詳細なご回答に個人教授を受けたような気分になりました。
投稿日時 - 2002-04-09 18:37:56
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ