ハマっている「お菓子」を教えて!

BGMのオンオフは見かけるのですが、効果音のオンオフの制御は出来るのでしょうか?
現時点では各アイコン(ボタンタイプのシンボル)のオーバーのところにwavファイルを置いてます。

これをオンオフ切り替える事で、アイコンにマウスを併せても音がならないようにしたいのです。
音源ファイルの置き方にも問題がある気がしますが...。

環境はCS4です。
説明不足かも知れませんが、教えて戴けたら幸いです。

A 回答 (2件)

#1です。



> ボタンタイプのシンボルにして、
> オーバーのフレームにだけ音源ファイルをおいてあります。

そういう状況でしたら次のようにするのが1つの方法だと思います。
(その状況だと案は以下の1つくらいしか思い浮かばない。)


ステージ上には5つのボタンがあったとします。

 [■sound]
 [■top] [■mail] [■blog] [■link]

ボタンにはそれぞれ
「sound_btn」「top_btn」「mail_btn」「blog_btn」「link_btn」
というインスタンス名を付けていたとします。

※ インスタンス名は,
  各ボタンを1つずつ選択した状態で
  ステージ右の「プロパティ」パネルの
  上の方にある
   [<インスタンス名> ]
  となっている入力ボックスで設定できます。


そのようになっている状態で
それらボタンが存在するフレーム(キーフレーム)に次のスクリプトを書きます。

---------------------------------
//音 オン・オフ のフラグを用意(初期値:オン)
var sound_flg:Boolean = true;

//「sound_btn」クリック時の動作を定義
sound_btn.onRelease = function():Void {
//もしフラグの値が true であれば
if (sound_flg) {
//フラグの値を false にする
sound_flg = false;
//(目印にこのボタンを半透明にする)
this._alpha = 50;
//もしフラグの値が false であれば
} else {
//フラグの値を true にする
sound_flg = true;
//(目印にこのボタンを不透明にする)
this._alpha = 100;
}
};

//関数 deleteSound の定義
function deleteSound():Void {
//もしフラグの値が false であれば
if (!sound_flg) {
//全ての音オブジェクトを削除
stopAllSounds();
}
}

//「top_btn」~「link_btn」ロールオーバー時に
//関数 deleteSound を実行
top_btn.onRollOver = deleteSound;
mail_btn.onRollOver = deleteSound;
blog_btn.onRollOver = deleteSound;
link_btn.onRollOver = deleteSound;
---------------------------------



要するに「音制御ボタン」を1回クリックしたときに
用意したフラグ用変数の値を false にするわけです。

そして4つの「メニューボタン」にロールオーバーしたときに
そのフラグ用変数の値が false である場合に限って出てくる音を全て消すというしくみです。


音(Soundオブジェクト) にインスタンス名などを付けて
その音をボタンのロールオーバー時に呼び出すような仕組みにしてあると
その音を呼び出さなければ良いというだけのことになります。

そうではなく
ボタン内タイムラインに配置した無名の音が勝手に鳴るしくみを作っているわけですから
勝手に鳴り出す全ての音をその都度消してしまうしか方法はないということになります。


ちなみに私が作成してみたものの参考図↓
「SEのオンオフ」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます!無事に動作致しました。
詳細に説明戴き、勉強にもなりました。感謝です。

キーフレームに直接置くと言うやり方自体が方法論を減らしてしまうと言う事ですね。

お礼日時:2011/01/19 03:08

> 環境はCS4です。



それだけでは状況(状況 以前のバージョン情報)がわかりません。
ActionScript 2.0 以下 を使用しようとしている(ActionScript 1.0 や 2.0 パブリッシュ設定が条件) とか
ターゲットとする Flash Player のバージョン とか(携帯用 Flash Lite である可能性もありますよね)。
もし,
そんなものはどうでも良いのでしたら,「バージョンは何でも良い」という状況説明が不足しています。


> 説明不足かも知れませんが

その通りですね。



ActionScript の バージョン などもわかりませんし
作ろうとされているものによっても方法やスクリプトなどは全く変わりますから何とも言えません。
したがって具体的な回答はできませんので大雑把に書きます。

何かフラグ(適当な変数)を用意して
たとえば 「オン」 状態でのフラグの値を true にして
「オフ」状態でのフラグの値を false にしておきます。
そして
効果音が鳴る仕組みのアイコンをムービークリップで作成して,
フラグが true のときだけ アイコン 内を 音の入ったフレーム に進める。
という方法も考えられます。

また
たとえば ユーザが 「オン」 状態 や 「オフ」 状態を指定するときのボタンクリックなどで,
アイコン の enabled プロパティを true や false にする方法も考えられます。

この回答への補足

すみません。説明不足にも程がありました...。ご指摘ありがとうございます。

教えて戴いた方法論も考えてみるとして、まずは補足分を書かせて貰います。


ActionScriptは2.0、playerは10です。

作ろうとしている物はflashメニューで、

[■top] [■mail] [■blog] [■link]
のように画像が並んでいます([ ]がひとつの画像です)

ひとつの画像にマウスを載せる度にそれぞれの効果音が鳴るのですが、
その音が鳴る、鳴らないをボタンで切り替えが出来るようにしたいと思います。

現時点での方法はひとつの画像ごとにボタンタイプのシンボルにして、オーバーのフレームにだけ音源ファイルをおいてあります。

補足日時:2011/01/16 20:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!