JSplash
SWF to Javascript Converter
                              gyuque
最近のブラウザは爆速らしい

                   Google V8 benchmark (Score)

   700
   600
   500
   400
   300
   200
   100
     0
   ...
せっかくだから無駄遣いしよう

  昔から、パワーの無駄遣いと言えばゲーム


            スプライトがないPC-66でスペハリ
            (変態)




            8ビット機で3Dポリゴン
     ...
目標



     Flashのゲームを
     どうにかして
     Javascriptで動かす
手順



     どうにかして読み込む
     どうにかして描画する
     どうにかしてASを動かす
読み込み

swfmill というのがあります
http://swfmill.org/




swfバイナリ


                      <?xml version=quot;1.0quot;?>
            ...
読み込み




            JS
       重!   JSplash.load_swf( {
             header: {frameRate: 40, frames: 18, width:
          ...
描画

シェイプデータをSVGに変換する

                         SVG




 Official Flash Player
ActionScript


    AVMを実装する?     考えたくもない


    ASってそもそもECMAScriptなんだから
    ブラウザに投げりゃよくね?
ActionScript

 flare というのがあります
 http://www.nowrap.de/flare.html




 swfバイナリ


                   frame 1 {
              ...
ActionScript


                              逆コンパイルされたコード
                     source




       FrameAction
             ...
世の中はそんなに甘くない
ActionScript
 傾向と対策


  thisは? → prototype.js の bind (解決)

  グローバルは? → windowに突っ込んでおく(ちょっと苦しい)

  _x とか _parent とかは? → スクリ...
ActionScript

    ローカル変数は?

       Frame 1        Frame 2        Frame 3



         var a = 5;    trace(++a);    trace(++...
ActionScript
           実行時にスクリプトを書き換え

            function() {      function() {
              var a = 5;        var a =...
ActionScript


    ローカル変数のリストは? → 手書き (苦しい)

    その他(クロージャとか) → 全自動はきつい!




          ASとの息詰まる闘い。
今のところの戦果
To Do


   DefineButton

   ビットマップデータ

   音(できれば)
本日コミット
           よろしくお願いします
      http://www.libspark.org/svn/ruby/jsplash/



20%
Upcoming SlideShare
Loading in …5
×

JSplash swf to javascript converter(2008/9/30)

7,594 views
7,509 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,594
On SlideShare
0
From Embeds
0
Number of Embeds
2,176
Actions
Shares
0
Downloads
42
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

JSplash swf to javascript converter(2008/9/30)

  1. 1. JSplash SWF to Javascript Converter gyuque
  2. 2. 最近のブラウザは爆速らしい Google V8 benchmark (Score) 700 600 500 400 300 200 100 0 IE7 Chrome Fx3.1 Safari http://japan.cnet.com/blog/kichi/2008/09/23/entry_27014819/
  3. 3. せっかくだから無駄遣いしよう 昔から、パワーの無駄遣いと言えばゲーム スプライトがないPC-66でスペハリ (変態) 8ビット機で3Dポリゴン (変態)
  4. 4. 目標 Flashのゲームを どうにかして Javascriptで動かす
  5. 5. 手順 どうにかして読み込む どうにかして描画する どうにかしてASを動かす
  6. 6. 読み込み swfmill というのがあります http://swfmill.org/ swfバイナリ <?xml version=quot;1.0quot;?> <swf version=quot;7quot; compressed=quot;1quot;> <Header framerate=quot;30quot; frames=quot;18quot;> XML <size> <Rectangle left=quot;0quot; right=quot;14000quot; top=quot;0quot; bottom=quot;8000quot;/> </size> <tags> <SetBackgroundColor>
  7. 7. 読み込み JS 重! JSplash.load_swf( { header: {frameRate: 40, frames: 18, width: 14000, height: 8000}, taglist: [ {tag:JSplash.tSetBackgroundColor, rgb:'dd dddd'} /*- 0 -*/, {tag:null}, {tag:null}, {tag:JSplash.tDoAction}, 軽い+パース不要
  8. 8. 描画 シェイプデータをSVGに変換する SVG Official Flash Player
  9. 9. ActionScript AVMを実装する? 考えたくもない ASってそもそもECMAScriptなんだから ブラウザに投げりゃよくね?
  10. 10. ActionScript flare というのがあります http://www.nowrap.de/flare.html swfバイナリ frame 1 { stopAllSounds(); ソースコード delete onMouseDown; var init; this.play(); if (init == undefined) {
  11. 11. ActionScript 逆コンパイルされたコード source FrameAction JS Engine
  12. 12. 世の中はそんなに甘くない
  13. 13. ActionScript 傾向と対策 thisは? → prototype.js の bind (解決) グローバルは? → windowに突っ込んでおく(ちょっと苦しい) _x とか _parent とかは? → スクリプト実行前後に設定、 チェックする(ちょっと苦しい)
  14. 14. ActionScript ローカル変数は? Frame 1 Frame 2 Frame 3 var a = 5; trace(++a); trace(++a); 6 7
  15. 15. ActionScript 実行時にスクリプトを書き換え function() { function() { var a = 5; var a = this.__locals__[‘a’]; } var a = 5; 保存 this.__locals__[‘a’] = a; } toString eval function() { function() { trace(++a); var a = this.__locals__[‘a’]; } trace(++a); 復帰 this.__locals__[‘a’] = a; } ※ 子ムービークリップの参照などもこの方法で突っ込む
  16. 16. ActionScript ローカル変数のリストは? → 手書き (苦しい) その他(クロージャとか) → 全自動はきつい! ASとの息詰まる闘い。
  17. 17. 今のところの戦果
  18. 18. To Do DefineButton ビットマップデータ 音(できれば)
  19. 19. 本日コミット よろしくお願いします http://www.libspark.org/svn/ruby/jsplash/ 20%

×