| Name |
Yutaro |
| Date |
2006年01月10日 (火) 17時38分 |
| Message |
いろいろと音楽を再生するFlashがあったのですが、
http://mia.mods.jp/のmultimedia>musicにあるような
ものを作りたいのですが、できません。
説明をお願いできませんか?Flash5 です。 |
Response
01
|
|
Response
02
|
| 2006年01月11日
(水) 18時57分> Yutaro |
|
挨拶忘れてました。すいません。はじめましてです。
作りたいのは mia(http://mia.mods.jp/mia/mia.htm)の
右のmenuのmultimediaの中のmusicにある、
mia audio playerのようなものが作りたいです。
もし作るとしたら、Flash5では最初に読み込みたいMP3などを
すべて入れておかないといけないのですか?
また、そのときいくつかのMP3を再生したいときに
どれを再生するかは、どうやって、指定すればいいですか?
希望は先ほどのHPのように、HTMLでLoadボタンを作って押すと、
FlashでLoadされて、Playを押すとそのMP3が再生されるように
したいのでが。それは、不可能なんですか?
|
|
Response
03
|
| 2006年01月12日
(木) 01時39分> 憲ちゃん
|
|
あらためて、はじめましてYutaroさん♪
sound1.MP3〜sound3.MP3という3つのサウンドファイルがあれば、
たとえば、s1.swfにsound1.MP3、s2.swfにsound2.MP3、s3.swfにsound3.MP3をというように
それぞれMP3ファイルごとに編集段階でフレームに読み込んでおきます。
同期は「ストリーミング」がWeb上では有利です。
中身はサウンドだけですから、見えないのでムービーの大きさは何でも構いません。
コントロールパネルのあるswfをmain.swfとすれば、
main.swfに曲の選択ボタンを設置して、各々ボタンのボタンアクションで、
on (press) { ボタンが押されたら
loadMovieNum("s1.swf",1);←”s1.swf”をレベル1に読み込んで再生
} ※他のボタンもレベルはそのままで、読み込むSWFファイル名のみ変更
とします。
サウンドを「ストリーミング」に設定してあると、
レベル1に読み込みが開始されると同時に鳴り出します。
他の選曲ボタンを押すと、先にレベル1で再生されていたSWFと入れ替わりに、
新しいSWFが読み込まれて再生がはじまります。
■メニューでサウンドを選択して再生するには
main.swfの「再生」「停止」等のボタンの説明は、上記の記事にあります(^^)
そして・・・
おっしゃるようなHTML上に配置した選択ボタンからSWFをコントロールするというのは、
JavaScriptを併用しないと実現できません。
過去記事の■「別フレームのムービーを制御する方法」分かりました(^^;を参考にしてください。
ここでは別フレームのHTMLに埋め込んだSWFから、mainのSWFをコントロールしています。
それが・・・
on (release) {
getURL ("JavaScript:gotoFrame('flash2');");
}
この部分ですが・・・
HTML上のGIFファイルから行うなら・・・
<a href="JavaScript:gotoFrame('flash2');"><img src="***.gif"
border=0></a>
こんな感じにすればよいのでは、と思います。
この場合、main.swfの”flash2”というフレームラベルに、
フレームアクションで、loadMovieNum("s2.swf",1); と記述しておきます。
|
|
Response
04
|
|
Response
05
|
| 2006年01月13日
(金) 16時37分> 憲ちゃん
|
|
まず、v_control0.flaの「PLAY」「STOP」ボタンですが・・・
on (release) {
_level1.play(); 及び _level1.stop();
}
これは、そのまえに「レベル1」にサウンドの入ったmusic1.swfを読み込んだあとの処理です。
「レベル1」に何も無いのにそのフレームを進めたり停止したりしても意味がありません(^^;
どこかに、「選択ボタン」を設置して、そのボタンに・・・
on (release) {
loadMovieNum("music1.swf",1); ←music.swfをレベル1に読み込んで再生
}
読み込むと「PLAY」「STOP」の各スクリプトが、レベル1にあるmusic1.swfのタイムラインを
停止したり、再生したりできるようになります。
そして、そのmusic1.flaの中ですが・・・
サウンドの同期を「イベント」にしてあると、一旦再生が始まるとタイムラインとは関係なしに
鳴り出しますので、「STOP」ボタンでタイムラインを停止しても鳴り止みません。
この場合は、イベントを「ストリーミング」に設定し、フレーム上の波形が消えるまで
フレームを伸ばしてください。
追加でお尋ねの「曲名を表示」するなら、
music1.flaの1フレームに、テキストで曲名を記載しておきます。
こうなると、見えないSWFではなく見えるSWFになりますので、
v_control0.swfに読み込んだときの表示場所を決める必要があります。
外部SWFの読み込で、レベル階層を指定する場合は、ムービーを本体と同じ大きさにして、
レイアウトを考えて配置する必要がでてきます。
以下のサンプルは、もうひとつの方法、MCに外部SWFを読み込んでいます。
この場合どちらで行っても構いませんが、MCにすると読み込み位置を、本体のほうで
決めることができます。
m_control0.fla music1.fla
まずサウンドの入ったSWF、music1.flaの編集画面を次の図のようにします。

ムービーの大きさサイズは、文字の部分の大きさにしておきます。
サウンドを2フレームに配置して、同期を「ストリームング」に設定。

これでタイムラインの進行とサウンドデータの再生が一致しますので、波形が消えるまで
フレームを延長します。ループさせない場合は最終フレームに「this.stop();」を記載して、
タイムラインを停止させます。
1フレームのフレームアクションは、次のように記載しています。
_root.bar.tFrame = this._totalframes-1;
意味は、_rootに配置された「bar」というインスタンス名のMCにある変数tFrameに、
自分の「総フレーム数−1」を代入。
以下でご説明しますが、このSWFファイルは、
選択ボタンなどのある本体ムービー(m_control0.swf)の中のシーン(_root)上にある
「読込MC」に読み込まれて、そのMCとして再生されます。
そして、本体ムービーには同じく_root上に「表示時間」MC(インスタンス名bar)があり、
そこにバーや残り時間を表示するために必要な変数tFrameを置いています。
読み込まれた段階で、そこからこの変数tFrameを指定すると、このようなパスになります。
本体ムービーのシーン上に「選曲してください」の文字の入った「読込MC」と、
選曲用のボタンを3つを配置しています。
「読込MC」のインスタンス名を「mc」と付けて、各選択ボタンのボタンアクションで、
on (release) { ボタンがクリックされたら
mc.loadMovie("music1.swf"); ←インスタンスmcの中に"music1.swf"を読み込む
} ※他のボタンはそれぞれ"music2.swf"、"music3.swf"としています。
読み込まれると、music1.swfの1フレームからその総フレームの値として、
barの変数tFrameに代入され、時間表示とともにバーの大きさが拡大し、
曲が再生されていきます。
「再生」「停止」ボタンでは、読み込んだインスタンスmcのタイムラインの進行・停止を
制御すればよいので、たとえば「一時停止」ボタンなら、
on (press) { ボタンが押されたら
mc.stop(); ←インスタンスmcのタイムラインを停止
}
このようにすれば良いわけです。
この本体ムービーは「サンプルでまなぶActionScript」のP230、「sample-b34」を転用した
ものです。「表示時間」のしくみ等、詳しくは本で研究してみてください(^^;
「*%読み込みました」というのは、この場合必要ありません。
「ストリーミング」サウンドというのは、1フレームずつデータを読み込んでは再生、
読み込んでは再生を繰り返しながら再生していく方式ですから、相当大きなサイズでも
SWFの読み込み開始とほぼ同時に待ち時間なしで再生が始まります。
Yutaroさんのflaファイルの音質を上げて作成しなおしたサンプルの「music1.swf」のサイズは、
2.3MBです。
「イベント」サウンドは、すべてのサウンドデータを完全に読み込まないと再生が始まらない
というものですから、その場合は「NowLoading」を使って%表示する必要があるかもしれません。
<参考>■全容量読み込み用ローディングの作り方
ただ、それはいたずらにビジターを待たせるだけであってお勧めできません。
そして、ボタン等からの制御方法や「時間表示」の方法も全く異なったものになります
|
|
Response
06
|
| 2006年01月13日
(金) 18時56分> Yutaro |
|
丁寧にありがとうございます。
最後に1つだけ質問させてください。
HTMLからロードするボタンが
この(http://yu-2.org/flash/)ようにしましたが、
エラーになります。どうすればいいですか?
<関連記事> |
|