新ブログ「ごんフラブログG2」

WordPressで始めてみました

[海外]バンドルされた複数のゲーム・PCアプリが購入できるサイト
humblebundle.com


ごんたろうのぼやきトップ

2013年02月05日

【Flash】Soundクラスについて

2つ以上のサウンドを別々に制御したい場合などに
Soundクラスをよく理解していないと、落とし穴があるので記録。

例えば、BGMとSEなどを分けたい場合。
var se_sound = new Sound();
var bgm_sound = new Sound();

などと書きますが、この場合だと、設定したボリュームなどが
双方で相殺されてしまいます。
というのはnew Sound()にしてしまうと、ムービークリップターゲットが
デフォルト値(初期値)の_rootになってしまうからです。
new Sound()の()内は対象ムービークリップを指定しなければいけません。

どういうことかというと、サウンドを鳴らすのに
ムービークリップ内で鳴らす…と言えばいいのでしょうか。
例えば上記のSEとBGMの場合、
SE用のサウンドを鳴らすムービークリップ(空でOK)
BGM用のサウンドを鳴らすムービークリップ(空でOK)が
必要になります。
サウンドを鳴らす場合、1つだけなら
_rootでかまわないかもしれませんが、2つ以上の場合は要注意です。
書き方は
var se_sound=new Sound("se_sound_mov");
var bgm_sound=new Sound("bgm_sound_mov");
という感じです。
少々手間ですが、se_sound_movやbgm_sound_movは
あらかじめ作成する必要があります。

インラインに初めから配置する場合でも、
attachmovieやcreateEmptyMovieClipを使ってもかまわないと思います。
ただ、各関数の書式には御注意ください。
特に深度(depth)のカブリなどは前のインスタンスを消してしまう
原因になりますので要注意です。

変数指定の場合は
var se_sound=new Sound(hogehoge1);
var bgm_sound=new Sound(hogehoge2);
などと、""ダブルコーテーションは必要ありません。

作業中に躓いたので記録しておきます。
posted by ごんたろう(Gontaro-Soft) at 20:56 | Comment(0) | ActionScript3.0

2013年01月29日

【Flash】loadMovieでの注意。

Action Script1.0 & 2.0形式の記述です。
3.0で応用が利くかはわかりません…。


FlashでloadMovieからswfをロードする際に注意する点。

読み込まれるswfがどのレベルに(_rootやその他のMovieclip)
配置されるかで変わりますが、読み込まれる側のswf内で
変数や関数のパス指定に_rootを使用している場合は注意
しなければなりません。
読み込まれる側のswfファイルで_rootを指定している状態で
読み込むレベルが_root以外の場合、上記に書いた
変数や関数のパスが変わってしまいます。

例えば、読み込まれるswf(read.swf)内で
変数 _root.hogehogeや_root.Kansuu()を呼び出す処理を
記述していて、読み込む側(main.swf)の
stage_movというムービークリップ内にread.swfを
loadMovieで読み込んだ場合、
read.swfで指定している_rootというのは、main.swfの
_rootに置き換わってしまいます。

仮に、main.swfの_rootに読み込む場合は
この問題は生じませんが、元のmain.swfを残して
他のswfを読み込む場合は、パスに充分気を
つけなければいけません。

こういう場合、前述の_root.hogehogeを
_parent.hogehogeにしたり、場合によっては
_parent._parent.hogehogeなどにしておく
必要があります。
特に、read.swf単体では正常に動くが、
main.swfとの連結、結合の段階で正常に動作しない
ことが発生します。
そのため、_parentや_root、thisも含め、
(thisを付加しないケースもあります)
パス指定は重要なので充分に気をつけましょう。
posted by ごんたろう(Gontaro-Soft) at 18:23 | Comment(0) | ActionScript3.0
ブログランキング・にほんブログ村へ
にほんブログ村

インターネット・コンピュータランキング