GAE で flash を使いたいって思ってたんですが、やはり便利なものがあるんですね。PyAMF は AS と Python 間のデータのやりとりをするためのモジュールです。
以下、Using PyAMF with Google App Engine を参考に書いていきます。
Get PyAMF
まずは、Get PyAMF のページから、fpconst.py をダウンロードします。続いて Py AMF もダウンロードし、解凍しておきます。Py AMF の現時点での最新ヴァージョンは 0.3 です。Example Project
この Project 用に新しくフォルダを作成し、その中に、以下のようにファイルを準備します。+ MyProject
- fpconst.py
- main.py
- app.yaml
- pyamf
- testPyAMF.swf
順に見ていきます。 fpconst.py はダウンロードしたものをそのままコピペします。
main.py は↓のようになります。
import wsgiref.handlers
from pyamf.remoting.gateway.wsgi import WSGIGateway
# 関数 echo を定義。受け取ったものをそのまま返すだけ。
def echo(data):
return data
# 関数 echo を 'echo' として呼び出せるようにする。
services = {
'echo': echo,
}
def main():
application = WSGIGateway(services)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
次に、app.yaml
application: MyProject
version: 1
runtime: python
api_version: 1
handlers:
- url: /testPyAMF.swf
static_files: testPyAMF.swf
upload: testPyAMF.swf
- url: /.*
script: main.py
pyamf は先程ダウンロードして解凍しておいたフォルダの中にあるフォルダです。pyamf フォルダをまるごとコピペします。
最後に、testPyAMF.swf ですが、以下の testPyAMF.as を使って生成します。
package{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.net.NetConnection;
import flash.net.Responder;
public class testPyAMF extends Sprite {
private var netConnection:NetConnection;
private var responder:Responder;
private var output:TextField;
public function testPyAMF() {
output = new TextField();
output.autoSize = TextFieldAutoSize.LEFT;
addChild(output);
netConnection = new NetConnection();
netConnection.connect("http://localhost:8080/");
responder = new Responder(onComplete, onFail);
// Python側の echo を呼び出す。
netConnection.call("echo", responder, "Flash talked to PyAMF. They both say hello.");
}
//サーバーの呼び出しが成功して結果が返された場合に呼び出される
private function onComplete(results:String):void {
output.htmlText = results;
}
//サーバーがエラーを返したときに呼び出される
private function onFail(results:*):void {
for each (var thisResult:String in results){
output.appendText(thisResult);
}
}
}
}ブラウザで確認する
全てのファイルが準備できたら、http://localhost:8080/testPyAMF.swf にアクセスします。 "Flash talked to PyAMF. They both say hello." が表示されていれば成功です。AS 側から netConnection.call を使って、Python の echo メソッドを呼び出しています。echo は受け取ったものをそのまま返すだけなので、"Flash talked to PyAMF. They both say hello." がまた AS に戻ってくる、というわけですね。受け取った文字列を onComplete で処理しています。
The GAE SWF Project
Google App Engine で flash や flex を使うための フレームワークを Aral Balkan 氏が公開しています。
これはなかなか素晴らしいですね。さっそくダウンロードして中を覗いてみたいと思います。
The GAE SWF Project について、詳しくは作者 Aral Balkan 氏のブログを。
http://aralbalkan.com/
関連記事
・ Google App Engine : Getting Started その4 : local で static files を扱おうとするとエラーになる時の解決策 for Windows・ Google App Engine : Getting Started その3
・ Google App Engine : Getting Started その2
・ Google App Engine SDK で Hello, World!
<< Google App Engine : Getting Started その4 : local で static files を扱おうとするとエラーになる時の解決策 for Windows | Google App Engine で flash や flex を使うための PyAMF | Blender 2.46rc4 で出力した COLLADA 1.4.0 ( .dae ) で GreatWhite ( PV3D ) with Flex 3 SDK >>













prev
random
next