2011年5月3日火曜日

[JSFL]CS5でのexportPNG

仕事でJSFLを使う機会があるのですが、
フラッシュの素材を一括png書き出しするスクリプトを随分前に書きました。
僕はCS4を使ってたので、動作確認も勿論CS4で。

今日、CS5でスクリプトを実行したら、うまく動かないという話だったので、
やってみたら確かに動かない。
パネルには"ビットマップが大きすぎる。8000×8000以内じゃないとムリ"というエラーが吐かれていました。

exportPNGメソッドの使い方は以下のような感じ。
document.exportPNG([fileURI [, bCurrentPNGSettings [, bCurrentFrame]]]

bCurrentPNGSettingsはドキュメントによると
現在の PNG のパブリッシュ設定を使用するか(true)、PNG 書き出しダイアログボックスを表示するか(false)を指定するブール値

これがfalseの場合はFlash上で「イメージの書き出し」でpngを指定すると出てくるダイアログボックスが出てきます。
もちろん一括書き出しでそんな面倒な操作できないのでtrueにしておいたんですけど、
cs4ではうまくいっていたのにcs5だと前述のエラーが出て書き出せません。

そこで書き出し直前で、document.exportPublishProfileString()で得られるxml文字列を確認してみたところ、
width,heightとも60px。。。
その後いろいろ試したのですが、改善せず。

最後に省略していたbCurrentFrameをtrueにしてみました。

このbCurrentFrameはリファレンスによると
現在のフレームのみを書き出すか(true)、すべてのフレームをフレームごとに別の PNG ファイルとして書き出すか(false)を指定するブール値。このパラメーターはオプションです。デフォルト値は false です
だそうで、
要は、trueで現在の選択フレームのみを画像化するということです。

今回は1フレームしか必要なかったので、この値をtrueにするとすんなり動いてくれました。
よかったぁぁぁ。。。


余談ですが、このdocument.exportPNGは失敗するとfalseを返す仕様なのですが、
前述のエラー時には、trueを堂々と吐いてて、コノヤローと思いました。

JSFLは便利なんですが、ときたまこういうことしでかしてくれます。
あと微妙にバージョンで挙動が違ったりサポートしてなかったりするので注意です。

0 件のコメント:

コメントを投稿