home > 投稿 > swfmill の Windows ローカルテスト環境を
2009/03/21

swfmill の Windows ローカルテスト環境を


最近 MacBookPro を買ってやっぱり Windows として使ってます。しかし、EMOBILE (細くない方のPCカードタイプ)がささらず外出時はサーバー確認できないのが困ります。ここはローカル環境を整備するしかないと思い、XAMPPwindows 用の swfmill を入れてみたのですが、うまく swf をはいてくれない・・・

swf をバイナリエディタで開いたところでやっとわかりました。入力されたSWFの"0A"が"0D0A"として出力されてます。パイプ処理をかましたからだと思いますが、Windowsの改行を変換すれば解決。 ・・・ こんなんしなくてもMacなら普通に環境を作れると思いますが。

<?

header('Content-type: application/x-shockwave-flash');
echo xml2swf(swf2xml('test.swf'));

function xml2swf($xml){
	$is_xampp = in_array('xampp',explode('/',$_SERVER["DOCUMENT_ROOT"]))>0;
	
	$descriptorspec = array(
		0 => array("pipe", "r"),
		1 => array("pipe", "w"),
		2 => array("file", "error.log", "a"),
	);
	if($is_xampp){
		$cmd = '/xampp/htdocs/www/bin/swfmill xml2swf stdin stdout';
	}else{
		$cmd = '/usr/local/bin/swfmill xml2swf stdin stdout';
	}
	$process = proc_open($cmd, $descriptorspec, $pipes);
	if (is_resource($process)) {
		fwrite($pipes[0], $xml);
		fclose($pipes[0]);
		$swf = stream_get_contents($pipes[1]);
		fclose($pipes[1]);
		proc_close($process);
		if($is_xampp) $swf = str_replace("\r\n","\n",$swf);
	}else{
		$swf = null;
	}
	return($swf);
}

function swf2xml($swf){
	$is_xampp = in_array('xampp',explode('/',$_SERVER["DOCUMENT_ROOT"]))>0;
	
	if($is_xampp){
		$process = popen('/xampp/htdocs/www/bin/swfmill swf2xml '.$swf,'r');
		if (is_resource($process)) {
			$xml = stream_get_contents($process);
			pclose($process);
		}else{
			$xml = null;
		}
	}else{
		$descriptorspec = array(
			0 => array("pipe", "r"),
			1 => array("pipe", "w"),
			2 => array("file", "error.log", "a"),
		);
		$process = proc_open('/usr/local/bin/swfmill swf2xml stdin stdout', $descriptorspec, $pipes);
		if (is_resource($process)) {
			fwrite($pipes[0], file_get_contents($swf));
			fclose($pipes[0]);
			$xml = stream_get_contents($pipes[1]);
			fclose($pipes[1]);
			proc_close($process);
		}else{
			$xml = null;
		}
	}
	return($xml);
}

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/588

コメント一覧

はじめまして。 XAMPPでswfmill使えないだろうかとさまよってたどり着きました。 現在htdocsフォルダの中にswfmill.exeをコピーすることで、XAMPPでswfmillを使うことはできるようになりましたが、Flash Lite 1.1での日本語変換バグの対応はどうされていますでしょうか? パッチ公開されてても当て方がわからないので困っています。 古い記事に対する質問で恐縮なのですが心当たりがありましたら教えていただけると幸いです。
Windowsローカル環境の swfmill に日本語を読み込ませるのは難しいようです。 多少手間がかかってもいいなら、simple という手書きのXMLからSWFを生成するコマンドを使う手があります。 これを使うと <clip id="clip" import="library/clip.swf"/> のように外部ファイルをインポートできます。 インポートするswfに日本語が入っていても問題ありません。 http://swfmill.org/doc/using-swfmill.html#packed http://blog.matic.jp/server/ssflash/20090217/swfmill-03.blog

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)