MAX Factory

Icon

モバイル(フィーチャーフォン、スマートフォン、タブレット)を中心とした技術メモ

デジハリ・オンラインスクールでスマートフォンサイト構築講座の講師やります!

スマートフォンサイトをこれから始めたい方は、是非一度を覗いてみてください。

スマートフォンサイト構築講座

[flash lite]スクリプトによる動的生成(テキストのみ)

今回はサーバスクリプトのみで携帯flashを動的生成する方法です。
※動的に出力できるのはテキストのみです。

下記にある動的生成クラスを利用すれば、簡単に動的生成することが可能です。
サーバスクリプトのみなので、特別なアプリケーションのインストールが不要(phpは必要)です。

■利用ファイル
・SwfGen.php 動的生成クラス
・sample01.php 動的出力テキスト設定・実行ファイル
・sample01.swf テンプレートflash

■各ファイルソース

◯動的生成クラス 言語:php5
ファイル名:SwfGen.php

<?php

class SwfGen
{
public static function execute($swf, $datas = array())
{
$doactiontag = SwfGen::_maketag($datas);

//road
$fr = fopen($swf,"rb");

$headtmp = fread($fr,9);
$rb = ord(substr($headtmp,8,1))>>3; // rectbit
$headlen = ceil(((( 8 - (($rb*4+5)&7) )&7)+ $rb*4 + 5 )/8) + 12 + 5;
$head = $headtmp.fread($fr,$headlen-9);

//change header
$oldsize = filesize($swf);
$newsize = $oldsize+strlen($doactiontag);
$newhead = substr($head,0,4).SwfGen::_h32($newsize).substr($head,8);

$tail = fread($fr, $oldsize-$headlen);
fclose($fr);

//output
header("Content-Type: application/x-shockwave-flash");
print $newhead.$doactiontag.$tail;
}

private static function _h32($sizeint)
{
return pack("V",$sizeint);
}

private static function _h16($sizeint)
{
return pack("v",$sizeint);
}

private static function _calctaglen($dataarray)
{
$ret = 0;
foreach($dataarray as $key => $value){
$ret += strlen($key)+strlen($value) + 11;

}
return $ret+1;
}

private static function _maketag($dataarray)
{
$tag = "¥x3f¥x03";
$taglen = SWfGen::_calctaglen($dataarray);
$tag .= SwfGen::_h32($taglen);

foreach($dataarray as $key => $value){
$tag .= "¥x96".SwfGen::_h16(strlen($key)+2)."¥x00".$key."¥x00";
$value = mb_convert_encoding($value, "SJIS", "EUC-JP");
$tag .= "¥x96".SwfGen::_h16(strlen($value)+2)."¥x00".$value."¥x00";
$tag .= "¥x1d";
}
$tag .= "¥x00";
return $tag;
}
}

◯サーバ側 言語:php
ファイル名:sample01.php

<?php

require_once "SwfGen.php";

//関数 execute
//第1引数 swfファイルパス
//第2引数 連想配列 key:変数名 value:値
//sample01.swf内にtest変数にhogehogeをセット
SwfGen::execute("sample01.swf", array("test"=>"hogehoge"));

◯flash側
・ファイル名:sample01.swf
・ダイナミックテキスト変数名:debug

//test変数の値をダイナミックテキストdebugに代入
debug = test;

■デモ(上記の実行結果)
http://maxfactory.biz/flash/sample/cms/sample01.php

■ソース一式ダウンロード phpは5系、flashはCS4
http://maxfactory.biz/flash/sample/cms/sample01.tar.gz

 

2010年3月
« 2月   4月 »
1234567
891011121314
15161718192021
22232425262728
293031  

プロフィール

Author:max

ディレクター(モバイルサイト・PCサイト・アプリ)

場合によっては、開発/制作業務もやっています。

元クリエイターなので趣味が面白そうなものを作る事

◆受賞歴
モバイルウィジェットコンテスト

Yahoo×SoftBank主催

[アドビシステムズ賞(銀賞)]
ペパボクリエイターズコンテスト 戻るボタンアワード

paperboy&co.主催

[ムームードメイン賞]

Twitter

Twitter Updates

    follow me on Twitter