総資産

csでの外部mp3再生方法


※注意

mp3再生は不安定な気がします。
mp3を扱う場合、0A95: enable_thread_savingは使わない方が無難だと思います。


まずCLEOフォルダの中にmp3フォルダを作り、その中に再生したいmp3ファイルを入れます。
mp3のファイル名がmusic.mp3だとするとCLEO/mp3/music.mp3となります。
後はcsの、
0AAC: 0@ = load_mp3 "CLEO\mp3\music.mp3"
でmp3を読み込み、
0AAD: set_mp3 0@ perform_action 1
で再生します。
0AAD: set_mp3 0@ perform_action 0
で停止のようです。
0AAE: release_mp3 0@
で破棄のようです。

 ※注意
mp3を再生しているときに、mp3を読み込んだり破棄すると固まります。
 例 読み込み)
0AAC: 0@ = load_mp3 "CLEO\mp3\music.mp3"
0AAD: set_mp3 0@ perform_action 1
0AAC: 0@ = load_mp3 "CLEO\mp3\music.mp3"
(読み込んで固まるのはこのように同じ変数で読み込んだ場合のみだけです。つまり再生中に上書きはしてはいけないということです。)

 例 破棄)
0AAC: 0@ = load_mp3 "CLEO\mp3\music.mp3"
0AAD: set_mp3 0@ perform_action 1
0AAE: release_mp3 0@

なので、再生中に読み込んだり破棄する場合は、
0AAC: 0@ = load_mp3 "CLEO\mp3\music.mp3"
0AAD: set_mp3 0@ perform_action 1
0AAD: set_mp3 0@ perform_action 0
のように先に再生を止める必要があります。

 0A95: enable_thread_savingを使用しているcsを使用中にセーブをするといろんな情報が保存されるようですが(5@ = 3とか、どのあたりをループしているかとか。多分です。)、mp3は変な値で保存されるようです。
なので最初にmp3を読み込ませるようなスクリプトだとセーブ後のデータでは固まると思います。
0A95: enable_thread_savingを使用しないなら情報が保存されないと思うので、mp3を扱う場合は0A95は使わない方が無難かもしれません。

 ダメな例
0A95: enable_thread_saving
0AAC: 0@ = load_mp3 "CLEO\mp3\pichu-n.mp3"

:PICHUN_10
0001: wait 0 ms
00D6: if
0118: actor $PLAYER_ACTOR dead
004D: jump_if_false @PICHUN_10
0AAD: set_mp3 0@ perform_action 1
0002: jump @PICHUN_20

:PICHUN_20
0001: wait 0 ms
00D6: if
0118: actor $PLAYER_ACTOR dead
004D: jump_if_false @PICHUN_10
0002: jump @PICHUN_20

セーブした後のデータではPICHUN_10と20をループするだけで、最初にload_mp3が行われず、しかも0@には変な値が保存されているようなので死ぬと固まります。

戻る

トップ

inserted by FC2 system