SWFの勉強会に行かなかった
スケジュール管理できてないので、行かないでしまった。
うーむ。
忘れっぽいので、よく忘れるので、もう仕方ないっす。U-Streamはあるようなので、そのへん見て楽しみまっす。
ここんところ、疲れてる忘れてるでほとんど勉強会に行けてないなぁ。
誰も誘ってくれんし。ハァ
というのは置いておいて、俺が考えていたネタを書いときます。
asを構文解析して、javascriptにトランスレートしようって話で、演算子順位法で構文解析して(Beautiful ないつものやつです)パターンマッチして、
flash lite 1.1の命令をCreateJSに対応させるJSFLを作って、タイムラインとボタンとライブラリをトラバースしてパターンマッチで置き換えるっていうプログラムを作ったのでした。
"on(press){@}": function (a) { return "this."+name+".onClick=this."+name+".onTouch=function(){"+nest(1)+p(a)+nest(-1)+"};\n"; }, "on(press,release){@}": function (a) { return "this."+name+".onClick=this."+name+".onTouch=function(){"+nest(1)+p(a)+nest(-1)+"};\n"; }, "on(release){@}": function (a) { return "this."+name+".onClick=this."+name+".onTouch=function(){"+nest(1)+p(a)+nest(-1)+"};\n"; }, "substring(@,@,@)": function(a,b,c) { return "(("+p(a)+").substring("+p(b)+","+p(c)+"))";}, "substring(@,@)": function(a,b,c) { return "(("+p(a)+").substring("+p(b)+"))";},
パターンマッチの箇所はこんなかんじで、気合入れてないのでというか、時間の合間でやってるので、こんなかんじです。
いつもは@をClean bookのZ式を参考に、式を連結させる演算子として使ってたのですが、@をパターンマッチ用の識別用にして、@@が式の連結であるようにしてあります。
nest関数で括弧内のネストをうまく管理して、pが再帰呼び出しされる変換関数です。
3項演算子はそれっぽく対応したつもりだったんだけど、うまく動いてなかったのでデバッグが必要とかです。
そこそこ動いてるので、仕事としてやらせてもらえるとかあれば、よろしくお願いします。
いちお、更新履歴と、TODOです。
// // AS to JS // history: // ●ボタンのメソッドは親に書く // ●ボタン内のプロパティにはparentを付ける。 // ●getURLをwindow.locationに // ●名のないボタンに名前を付けましょう // ●名前一覧を作成する // ●名前一覧の次の番号の名前から付ける。 // ●callに対応 // ●chrに対応 // ●ordに対応 // ●substring // ●fscommandはとりあえず無視 // TODO: // ○優先順位を変更 // ○3項演算子対応 // ○テキスト変数監視モードを付けるとよくて、付けるのは、Textオブジェクトの_draw, mesure等にいれるとよい。.textを.getText()に書き換えて内部でチェックするといいと思う。 // getTextというメソッドを作って、getText() { return parent[this.name.substring(0,this.name.length-1)]; }を入れればよさそう。 // ○getProperty // ○setProperty // ○座標などのプロパティは変換する // ○テキストに_をつけた名前を付ける // ○fscommandに対応 // ○fscommand2に対応