IO_SWF 3.6.0 をリリースしました

ChangeLog

  • swfdegrade.php を swfdowngrade.php に改名しました。(degrade は劣化なので)
  • DoABC で stop や gotoAndPlay が使われている場合に DoAction に変換する処理を追加しました。

swfdowngrade.php

新しいバージョンの Flash SWF を出来るだけ元の機能を残して古いバージョンに変換します。

% composer require yoya/io_swf
% php vendor/yoya/io_swf/sample/swfdowngrade.php -f v10.swf -v 4 > v4.swf

Adobe Animetor で出力できる SWF ファイルはバイナリの形式が新しすぎて、ガラケー等の古い Flash player で動作しません。これを無理やりバイナリ変換で表示できるようにするものです。

古いバージョンの機能しか使えなくなる為、見た目が変わってしまったり、そもそも動かない事もあります。
ただ、例えば Flash v4 向けで作った fla ファイルで v10 出力したものはファイル形式は v10 でも利用している機能は v4 相当の為、swfdowngrade.php で v4 に変換しても、そこそこ動作する可能性があります。

SWFv9 以降で使われるActionScript3 を v8以下の ActionScript1/2 へトランスレートするのはしんどいので、とりあえず、stop 命令と gotoAndFrame だけ対応しました。

今のところ複雑なゲームとかは無理ですけど、SWF バイナリを個人的に頂ければ、もしかしたら対応するかもしれません。