FlashLite1.1でクエリー文字列を渡す
08-01-07
posted by
aoki
FlashLite2.0では、_urlプロパティのサポートにより簡単にクエリーの値を渡せるようになりました。 詳しくはこちらhttp://geocities.yahoo.co.jp/gl/takuji_kawata/view/20061116/1163685460 をご覧ください。
しかし1.1ではクエリー文字列を渡すのは簡単にはいかないようです。そこでCGIでバイナリとしてswfをいじってしまえというのが今回の内容です。
とりあえずサンプル1とサンプル2をご覧ください。サンプル1はテキストフィールドを配置し初期値を代入したswfです。
サンプル2はクエリーとして渡した文字列をテキストフィールドに代入することができます。ご自由にクエリーを渡してください。ただしあまり長い文字列ですとうまくいかないので、悪しからず。
また、swf変換後のURLをQRコードに変換して携帯電話でも試してみてください。
QRコード変換の際は今開いているURLをQRコードに変換するブックマークレット(たたみラボ)
を参考にして下さい。
サンプル2のコードは以下のようになります。rubyで書いてあります。 swfにはダミーの文字列を用意してそれをクエリー文字列と交換する処理をしています。 ただ、交換後にswfファイルの容量が変わらないようにしてやる必要があります。
#!/usr/local/bin/ruby -Ku
require 'cgi'
cgi = CGI.new
query = cgi['query']
query_len = query.length
default_text = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
default_text_len = default_text.length
if query_len <= default_text_len
(default_text_len - query_len).times {
query << "0"
}
File.open("../swf/convert_binary.swf") {|file|
file.binmode
print cgi.header('type'=>'application/x-shockwave-flash')
print file.read.sub(default_text, query)
}
else
File.open("../swf/convert_binary.swf") {|file|
file.binmode
print cgi.header('type'=>'application/x-shockwave-flash')
print file.read
}
end
以上、簡単ではありますが「FlashLite1.1でクエリー文字列を渡す方法」でした。








コメント