• class SWFEditor function replaceShapeData($shape_id, $shapedata)

※ 0.38 からタグのヘッダ情報毎入れ替えるようにしました。

※ 0.37 以前のデータを受理する fallback 処理はありますが、できるだけ 0.38 以降で getShapeDataで取得したデータを扱うようにして下さい。fallback の際に swf_object_replace_shapedata: fallback to read old shape data が error_log に出力されます。

説明

SWF バイナリ中のベクター画像を差し替えます。

※ 制限事項の問題により、しばらく非推奨となります。 > (get|replace)TagDataByCID と isBitmapTag を用意します。

引数

  • int $shape_id (SWF 内のコンテンツ毎にふられた ID)
  • string $shapedata (SHAPE の生データ。getShapeData で取得出来ます)

戻り値

  • boolean $result (true:成功, false:失敗)

使用例

  1. <?php
  2. $swf = new SWFEditor();
  3. $swf->input($swfdata);
  4. $swf->replaceShapeData($shape_id, $shapedata);
  5. header('Content-type: application/x-shockwave-flash');
  6. echo $swf->output();

備考

  • 0.38 から getShapeData でタグヘッダ情報毎取得するようにして、そのデータ形式で replace するようにしました。
  • 0.37 以前の getShapeData で取得したデータも受理しますが、なるべく 0.38 以降の形式に合わせて下さい。

制限事項

  • 0.37 までの制限事項
  • Shape入れ替え元と後の tag 種(Shape or Shape2 or Shape3)が異なる場合に問題になります。
  • Shape(無印)のひな型 SWF に Shape2 を差し込むと失敗する事が多いです。(修正予定) その逆は恐らく問題ないはず…
  • Shape(無印), Shape2 のひな型 SWFに Shape3 、もしくはその逆で差し替えると問題になります。(API から考えなおす必要あり…)

参考

関連