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

19
SWF to Javascript Converter gyuque JSplash

Upload: gyuque

Post on 09-Jun-2015

7.296 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: JSplash swf to javascript converter(2008/9/30)

SWF to Javascript Convertergyuque

JSplash

Page 2: JSplash swf to javascript converter(2008/9/30)

最近のブラウザは爆速らしい

http://japan.cnet.com/blog/kichi/2008/09/23/entry_27014819/

Google V8 benchmark (Score)

0

100

200

300

400

500

600

700

IE7 Chrome Fx3.1 Safari

Page 3: JSplash swf to javascript converter(2008/9/30)

せっかくだから無駄遣いしよう

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

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

8ビット機で3Dポリゴン(変態)

Page 4: JSplash swf to javascript converter(2008/9/30)

目標

Flashのゲームを

Javascriptで動かす

どうにかして

Page 5: JSplash swf to javascript converter(2008/9/30)

手順

どうにかして読み込む

どうにかして描画する

どうにかしてASを動かす

Page 6: JSplash swf to javascript converter(2008/9/30)

読み込み

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

<?xml version="1.0"?>

<swf version="7" compressed="1">

<Header framerate="30" frames="18">

<size>

<Rectangle left="0" right="14000" top="0" bottom="8000"/>

</size>

<tags>

<SetBackgroundColor>

swfバイナリ

XML

Page 7: JSplash swf to javascript converter(2008/9/30)

読み込み

重! 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},

JS

軽い+パース不要

Page 8: JSplash swf to javascript converter(2008/9/30)

描画

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

Official Flash Player

SVG

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

ActionScript

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

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

Page 10: JSplash swf to javascript converter(2008/9/30)

ActionScript

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

frame 1 {

stopAllSounds();

delete onMouseDown;

var init;

this.play();

if (init == undefined) {

swfバイナリ

ソースコード

Page 11: JSplash swf to javascript converter(2008/9/30)

ActionScript

FrameAction

JS Engine

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

Page 12: JSplash swf to javascript converter(2008/9/30)

世の中はそんなに甘くない

Page 13: JSplash swf to javascript converter(2008/9/30)

ActionScript

傾向と対策

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

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

_x とか _parent とかは? → スクリプト実行前後に設定、チェックする(ちょっと苦しい)

Page 14: JSplash swf to javascript converter(2008/9/30)

ActionScript

ローカル変数は?

var a = 5; trace(++a); trace(++a);

Frame 1 Frame 2 Frame 3

6 7

Page 15: JSplash swf to javascript converter(2008/9/30)

ActionScript

実行時にスクリプトを書き換え

function() {

var a = 5;

}

function() {

trace(++a);

}

function() {

var a = this.__locals__[‘a’];

var a = 5;

this.__locals__[‘a’] = a;

}

function() {

var a = this.__locals__[‘a’];

trace(++a);

this.__locals__[‘a’] = a;

}

toString eval

保存

復帰

※子ムービークリップの参照などもこの方法で突っ込む

Page 16: JSplash swf to javascript converter(2008/9/30)

ActionScript

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

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

ASとの息詰まる闘い。

Page 17: JSplash swf to javascript converter(2008/9/30)

今のところの戦果

Page 18: JSplash swf to javascript converter(2008/9/30)

To Do

DefineButton

ビットマップデータ

音(できれば)

Page 19: JSplash swf to javascript converter(2008/9/30)

20%

本日コミットよろしくお願いします

http://www.libspark.org/svn/ruby/jsplash/