bloggalleryaboutcontact

第3回ABCワークショップでネタを出したよー

まとめはmutsukingにまかせた
ざっくり作ったやつをcodecheck.inにざっくりコミっときました。
http://svn.codecheck.in/at.codecheck.in/public_html/debility/XmasCards/

クライアントアプリ作ったことないしAIRも暇なくて久々に触った感じなのでぐだぐだになってるのはご容赦ください。
オブジェクト指向じゃないわ定数とかまとめてないわでまあ大変なことになってます。
リファクタリングはそのうちやるとして、いろいろと中身的な解説を。

・リソースからの読み込み
File.applicationDirectoryでアプリケーションのディレクトリを引っ張って、それから突っ込む。
ただ書き込みはなんかPermissionで怒られたのでとりあえずFile.userDirectoryに突っ込んでます。

・Flashのサムネイルを生成
mx.controls.Imageにswf突っ込んでます。
で、当然これswf側の1フレーム目にサムネイル用のフレームないと出ませんよ。
なんかうまい具合にサムネイル取れないですかねーと思案して諦めてこの方式にした。
実は警告かなんか出てますがまあご容赦を。

・サーバに送るところ
RESTで送るぞーということでXML作って送ってます。
本来は空のXMLオブジェクト作ってappendしていかなきゃいけないんだけど、まあとりあえず。
で、バイナリで画像突っ込みたかったんだけどなんかうまいこといかなくて。
{}で展開した時点でtoString()がかかってるぽい動きだったので、いろいろ考えてBase64エンコードかけて突っ込む形に。
mx.utils.Base64Encoderを使えば文字コード周りもうまく動いてくれたのでこっちで。
# 他のencoderも試してみたけど、まあすでに入ってるやつ使ったほうがいいよね。
ついでにByteArray.compress()使って圧縮してみました。データ大きいし。

・サーバから取ってくるところ
Rails側で検索の口を作ってもらって、ばつっとリクエスト投げてxmlで受け取ります。
とりあえず動かすならこれでもOKなんですが、ワークショップで仕様検討した感じだとURLLoader使ったほうがよさげ。
ResultEvent.lastResultの挙動が1回つかんだらすぐデータ離しちゃうので。
まあこの辺は次回くらいまでにまとめます。

・データを取ってきて展開するところ
取ってきたBase64のテキストデータをdecodeしてByteArrayをLoaderに食わせる。
のはいいんですがRails側でも勝手にBase64エンコードかけるらしく。
本来バイナリをそのまま突っ込んでRails側でBase64かけてくれるー、が作法のようなんですが。
前述の通りこっちでencodeかけてるので2回encodeかかってますよと。
なので2回decodeかけるなんてとんちで乗り切ってます。ああカッコ悪い。

var base64Decoder:Base64Decoder = new Base64Decoder();
base64Decoder.decode([base64が2回かかってるテキストデータ]);
base64Decoder.decode(base64Decoder.toByteArray().toString());
var bytes:ByteArray = base64Decoder.toByteArray();

あとcompressかけてるからちゃんとuncompressしましょう。

・SWFを読み込むところ
Loaderで拾ったものをSWFLoaderに食わせてaddChildすればおk。
ここまでやればMovieClipにできるのです。
で、gotoAndPlayとかコールできるのでそいつを実行しようねーと。
注意点として、gotoAndPlayとかgotoAndStopとかの後に値をセットしようとすると怒られます。
なのでセット関係は先にやっちゃって、それから再生。
テキストの表示コントロールとかはFlash側に任せたほうが幸せになれます。

今回はとっぱらいすぎたので、もうちょっと構成きれいにしてから資料起こします。
がまあとりえず現状出せるネタは出しときましょうってことで。

ついでに懇親会の話。
1次会は平和に水炊きつついて2次会はダーツバー行って。
なんかまー2次会でいろいろ飲んだ。いや飲まされた。
立体四目並べでkisと激闘したのがいい思い出です。楽しかったー。次は負けない。
ぐでんぐでんになるまで飲みまくってふらふらーっと家に帰りました。
記憶がてきとうてきとうになってるので誰かちゃんとまとめ書いてください。
そこ外注かよという突っ込みはスルーの方向で!

おつかれさまでした。
 Permalink