setActionVariables 実装

SWFEditor で SWF にパラメータを埋め込むのに、現状、
テキストボックスを利用して頂いていますが、
ActionScript の変数を、直接的に埋め込みたいという要望があり、

↑↑これを真似て、実装してみました。

原理

変数名と代入する値の文字列を各々 Push Data して SetVariable する
ActionScript Byte Code のバイナリを生成して、
DoAction タグの形式で SWF の初めの方に挿入します。

テスト

<?php
$swf_filename = $argv[1];
$swfdata = file_get_contents($swf_filename);
$obj = new SWFEditor();
$obj->input($swfdata);
$variables = array('yoyakey' => 'yoyavalue', 'foo' => 'goo');
$obj->setActionVariables($variables);
echo $obj->output();

結果

swfdump --full

[00c]        45 DOACTION
                 (    9 bytes) action: Push String:"yoyakey"
                 (   11 bytes) action: Push String:"yoyavalue"
                 (    0 bytes) action: SetVariable
                 (    5 bytes) action: Push String:"foo"
                 (    5 bytes) action: Push String:"goo"
                 (    0 bytes) action: SetVariable
                 (    0 bytes) action: End

懸念

  • 挿入する場所は初めの方ですが、具体的な条件が絞り込めていません。
  • とりあえず、FileAttribute よりは後にしてますが、コンテンツ系タグより前に置いて良いのかどうか。。

まず、iPhone に浮気してから Flash Lite が動く携帯が手元にないので、
誰かから借りないと確認出来なくて困るw

予定

SWF バイナリ的には期待通りですが、
実動作も期待通りなのが確認できたら、0.26 としてリリースします。