先日、過去の案件ファイルを引き継いで改修する機会があったんですが、思わぬ所でハマってしまいました。

もともとはAS2ファイル、Flash8でパブリッシュされたものだったようですが、自分のFlashCS4環境でパブリッシュしようとしたところ、ある異変に気がつきました。

鳴るはずのBGMが鳴らない…!

今回は、Flash CS4と過去のバージョンのFlashによるパブリッシュ結果の違いについての検証記事です。

 

 

症状が再現する条件

・Flashのライブラリ内に音声ファイルを置いてリンケージ書き出しを設定(今回は"BGM"と設定)

・リンケージ設定で「1フレーム目に書き出し」のチェックボックスを外す

・ライブラリに置いた音声ファイルをタイムラインのフレーム上に置き、「同期設定:停止」にする 

 

property-2.jpg

 

ちなみに、音声ファイルのフォーマットは関係ないようでした。(wavでもaifでもmp3でも同様の結果)

 

 

■ AS3版ファイルのアクションパネル、1フレーム目に記述した内容

var sound_mc:Sound = new BGM();
sound_mc.play();

 

■ AS2版ファイルのアクションパネル、1フレーム目に記述した内容

var sound_mc:MovieClip = _root.createEmptyMovieClip("sound_mc", _root.getNextHighestDepth());
var newSound:Sound = new Sound(sound_mc);
newSound.attachSound("BGM");
newSound.start(0,9999);

 

 

…という感じで、開いた瞬間にサウンドが再生されるswfを作成しました。

しかし、以下の組み合わせの中で再生されないパターンがあるようです。

 

 

組み合わせ別の結果一覧

■ AS3版flaファイルをFlash CS3で書き出し →音声が再生される

■ AS2版flaファイルをFlash CS3で書き出し →音声が再生される

■ AS3版flaファイルをFlash CS4で書き出し →音声が再生される

■ AS2版flaファイルをFlash CS4で書き出し →音声が再生されない

 

 

サウンドが再生されないswfファイルの容量は、4KB。

30秒のサウンドファイルを埋めこんだ上でこのファイルサイズはまずありえないので、どうやら正常に音声が埋めこまれていないようです。

 

 

おそらく原因と見られる設定は、以下の二点の組み合わせではないかと。

・リンケージ設定で「1フレーム目に書き出し」のチェックボックスを外す

・ライブラリに置いた音声ファイルをタイムラインのフレーム上に置き、「同期設定:停止」にする

 

 

あまり遭遇しないケースだと思いますが、備忘録としてメモしておきます。

今回検証に使ったflaファイルはこちら。(CS3形式のflaファイルです)

HTML5飯