99
SWF LOVE @ken39arg

SWF LOVE (ASを使わないFlash勉強会)

Embed Size (px)

Citation preview

Page 1: SWF LOVE (ASを使わないFlash勉強会)

♥ SWF LOVE ♥@ken39arg

Page 2: SWF LOVE (ASを使わないFlash勉強会)

自己紹介

Page 3: SWF LOVE (ASを使わないFlash勉強会)

荒賀 謙作

Page 4: SWF LOVE (ASを使わないFlash勉強会)

ガラケーサービスを5年超

Page 5: SWF LOVE (ASを使わないFlash勉強会)

現在、

鎌倉 の PHPer

Page 6: SWF LOVE (ASを使わないFlash勉強会)

今年も、古都鎌倉で

ガラケーサービス

Page 7: SWF LOVE (ASを使わないFlash勉強会)

最近の悩み

Page 8: SWF LOVE (ASを使わないFlash勉強会)

プログラマ35(30) 歳

定年説

Page 9: SWF LOVE (ASを使わないFlash勉強会)

齢29.5 才

Page 10: SWF LOVE (ASを使わないFlash勉強会)

定 年 ?

Page 11: SWF LOVE (ASを使わないFlash勉強会)

あせってます

Page 12: SWF LOVE (ASを使わないFlash勉強会)

プログラマ定年説を目前にして、そのプログラマ人生

の9割をガラケーと

PHP と共に過ごしてきたと、いうことに危機感

Page 13: SWF LOVE (ASを使わないFlash勉強会)

ところで

Page 14: SWF LOVE (ASを使わないFlash勉強会)

PHP 以外ですきな技術

Page 15: SWF LOVE (ASを使わないFlash勉強会)

Flash@ActionScript

Page 16: SWF LOVE (ASを使わないFlash勉強会)

Red5@Java

Page 17: SWF LOVE (ASを使わないFlash勉強会)

Red5

Flash Media Server のクローン

Page 18: SWF LOVE (ASを使わないFlash勉強会)

要するに PHP 以外は

SWF!

Page 19: SWF LOVE (ASを使わないFlash勉強会)

ガラケー + SWF

Page 20: SWF LOVE (ASを使わないFlash勉強会)

気がつけば

Page 21: SWF LOVE (ASを使わないFlash勉強会)

FlashLite動的生成担当

Page 22: SWF LOVE (ASを使わないFlash勉強会)

swfmill↓

flasm/ming/swftools↓

Binary!!

Page 23: SWF LOVE (ASを使わないFlash勉強会)

I Love SWF Binary Format!!

Page 24: SWF LOVE (ASを使わないFlash勉強会)

自称鎌倉の

No.1 FlashLite Binarian

Page 25: SWF LOVE (ASを使わないFlash勉強会)

FlashLite バイナリの

小ネタ

Page 26: SWF LOVE (ASを使わないFlash勉強会)

/:$X3

Page 27: SWF LOVE (ASを使わないFlash勉強会)

Do you know “/:$X3”?

Page 28: SWF LOVE (ASを使わないFlash勉強会)

_root.AS:if (++i%2==1) { $X3=“すき” ;}else{ $X3=“きらい” ;}

DefineEditText @VariableName=“$X3”

Page 29: SWF LOVE (ASを使わないFlash勉強会)

これだけなら問題無い

「すき」→「きらい」→「すき」→「きらい」→

Page 30: SWF LOVE (ASを使わないFlash勉強会)

flower.AS:switch (random(5)) {case 1: gotoAndPlay(‘window’); break;case 2: gotoAndPlay(‘double’); break;default: gotoAndPlay(‘nomal’); break;}

Page 31: SWF LOVE (ASを使わないFlash勉強会)

「すき」→「 1 」→「きらい」→「 3 」→「すき」→「 3 」→「きら

い」→「 0 」→

Page 32: SWF LOVE (ASを使わないFlash勉強会)

SWF4(FlashLite1.x) では

Page 33: SWF LOVE (ASを使わないFlash勉強会)

switch で使われる一時変数名が

“ /:$X3”になってる確率が高い

(というかそれしか見たこと無い )

Page 34: SWF LOVE (ASを使わないFlash勉強会)

絶対そんな変数名使わないと思いますが

Page 35: SWF LOVE (ASを使わないFlash勉強会)

ちなみに

Page 36: SWF LOVE (ASを使わないFlash勉強会)

SWF5 以降ActionStoreRegister(0x87)

の登場により解決してます

Page 37: SWF LOVE (ASを使わないFlash勉強会)

話は戻りますが、、

Page 38: SWF LOVE (ASを使わないFlash勉強会)

30 歳を目前に

ガラケーと SWF な俺の将来を考えてみた

Page 39: SWF LOVE (ASを使わないFlash勉強会)

ガラケーの将来

Page 40: SWF LOVE (ASを使わないFlash勉強会)

想像してごらん

Page 41: SWF LOVE (ASを使わないFlash勉強会)

時代はスマホ

Page 42: SWF LOVE (ASを使わないFlash勉強会)

スマホ

Page 43: SWF LOVE (ASを使わないFlash勉強会)

ガラケー?

Page 44: SWF LOVE (ASを使わないFlash勉強会)

「あったねーw 」

Page 45: SWF LOVE (ASを使わないFlash勉強会)

ガラケー終了のお知らせ

Page 46: SWF LOVE (ASを使わないFlash勉強会)

(  ̄ Д  ̄ ;)

Page 47: SWF LOVE (ASを使わないFlash勉強会)

じゃあ

Page 48: SWF LOVE (ASを使わないFlash勉強会)

Flash の将来

Page 49: SWF LOVE (ASを使わないFlash勉強会)

想像してごらん

Page 50: SWF LOVE (ASを使わないFlash勉強会)

時代はスマホ

Page 51: SWF LOVE (ASを使わないFlash勉強会)

スマホ

Page 52: SWF LOVE (ASを使わないFlash勉強会)

スマートフォン

Page 53: SWF LOVE (ASを使わないFlash勉強会)

iPhone

Page 54: SWF LOVE (ASを使わないFlash勉強会)

HTML5

Page 55: SWF LOVE (ASを使わないFlash勉強会)

。。。

Page 56: SWF LOVE (ASを使わないFlash勉強会)

Flash?

Page 57: SWF LOVE (ASを使わないFlash勉強会)

「あったっけ ?ww 」

Page 58: SWF LOVE (ASを使わないFlash勉強会)

Flash 終了のお知らせ

Page 59: SWF LOVE (ASを使わないFlash勉強会)

Orz

Page 60: SWF LOVE (ASを使わないFlash勉強会)

ということは?

Page 61: SWF LOVE (ASを使わないFlash勉強会)

俺の将来

Page 62: SWF LOVE (ASを使わないFlash勉強会)

想像してごらん

Page 63: SWF LOVE (ASを使わないFlash勉強会)

時代はスマホ

Page 64: SWF LOVE (ASを使わないFlash勉強会)

スマホ

Page 65: SWF LOVE (ASを使わないFlash勉強会)

スマートフォン

Page 66: SWF LOVE (ASを使わないFlash勉強会)

iPhone

Page 67: SWF LOVE (ASを使わないFlash勉強会)

HTML5

Page 68: SWF LOVE (ASを使わないFlash勉強会)

鎌倉 No.1 の FlashLite…?

Page 69: SWF LOVE (ASを使わないFlash勉強会)

「興味ない」

Page 70: SWF LOVE (ASを使わないFlash勉強会)

Page 71: SWF LOVE (ASを使わないFlash勉強会)

俺、終了のお知らせ

Page 72: SWF LOVE (ASを使わないFlash勉強会)

なんとかしたい

Page 73: SWF LOVE (ASを使わないFlash勉強会)

スマホ時代に、

Flash の技術や

ガラケーの知識今まで作ってきた SWF 素材

等等を活かして、

延命したい!

Page 74: SWF LOVE (ASを使わないFlash勉強会)

というわけで

Page 75: SWF LOVE (ASを使わないFlash勉強会)

SWF延命計画ここからが本題

Page 76: SWF LOVE (ASを使わないFlash勉強会)

全てのモバイル端末で楽にサービスを対応する方法を考えてます

Page 77: SWF LOVE (ASを使わないFlash勉強会)

前提条件 mova,FOMA,cdmaOne,win,c 型 ,p 型 ,W 型 ,3gc ガラケー制作で 1action に大量に HTML を作るなんて普通 クロスプラットフォームにあこがれ 1action,1html になったよね web 屋である

ブラウザでよくね ?

Page 78: SWF LOVE (ASを使わないFlash勉強会)

提案プラットフォーム 

HTML Movie Image

ガラケー XHTML Mobile FlashLite1.1 JPEG,GIF

Android HTML5 FlashLite1.1 JPEG,GIF,PNG

iPhone HTML5 HTML5 JPEG,GIF,PNG

• HTML = 2 パターンなんて楽な方• Flash をなんとかする

Page 79: SWF LOVE (ASを使わないFlash勉強会)

swf を iPhone で動かす

Page 80: SWF LOVE (ASを使わないFlash勉強会)

swf を iPhone で動かすツール wallaby gordon smokescreen

Page 81: SWF LOVE (ASを使わないFlash勉強会)

wallaby Adobe 純正の CS5 プラグイン SVG,JPEG,PNG,HTML,js,css のセットを書き出す いろいろと不完全 css アニメーションを多用しているため、アニメーションが同期していない サイズがでかい CS5 Flash が必要というのが痛い = ( 動的生成はできない )

Page 82: SWF LOVE (ASを使わないFlash勉強会)

gordon js で swf のバイナリを解析して svg を作り出す github で公開 Movie クリップに対応していない 不完全 開発止まってる

Page 83: SWF LOVE (ASを使わないFlash勉強会)

smokescreen 基本 gordon と同じもうちょっと進んでいる 2010/10 に oss comming soon! となってから音沙汰無し 2011/02 にひっそりと github 上に登場したリポジトリは別物 (svg -> canvas へ ) github で公開されているものはネストもアニメーションも出来ない

Page 84: SWF LOVE (ASを使わないFlash勉強会)

まだ良いのが無いので、自作することにしましたが、まだ出来ていません。とりあえず SVG がイケてる気がしたのでSWF を SVG に変換した話をこれからします

Page 85: SWF LOVE (ASを使わないFlash勉強会)

SWFと SVG のマッピングSWF   SVGDefineShape* <g> <path> <use>DefineSprite <g> <use>DefineBits* <image>Text <text>Font m(_ _)m

Page 86: SWF LOVE (ASを使わないFlash勉強会)

DefineBits* Flash に埋め込まれたラスターデータ JPEG はそのまま PNG と GIF は少し違うフォーマットにロスレス圧縮されている

Page 87: SWF LOVE (ASを使わないFlash勉強会)

DefineBits* Lossless はピクセルを PNG に戻す Bits,BitsJPEG* は data をそのまま取り出す

<image xlink:href=“…”> 画像データを保存して URL を” xlink:href” にセットしても良い base64 した文字列を” xlink:href” にセットしても良い

Page 88: SWF LOVE (ASを使わないFlash勉強会)

DefineShape SWF の持つベクターデータ SWF のデータ種類は非常にシンプル

直線 (LineTo) 曲線 (CurveTo) 塗り (fill) 線 (stroke)

3次ベジェやら circle とか rectangle とかない。何でも直線と曲線だけで表す男らしさがウリ

Page 89: SWF LOVE (ASを使わないFlash勉強会)

DefineShape 全体を <g> でまとめる ClipedBitmap は <use> Gradient は <linearGradient|radialGradient> style毎に <path d=“…” fill=“…” stroke=“…”> に変換→ LineTo|CurveTo が最大で   fillStyle0,fillStyle1,lineStyle の  3 つの path に作用

Page 90: SWF LOVE (ASを使わないFlash勉強会)

DefineShape DeltaX,DeltaY

絶対値に計算し直す LineTo(ShapeRecord@Type=2)

L toX toY

CurveTo(ShapeRecord@Type=3) Q controlX controlY toX toY to の絶対値は” start+control+to”

Page 91: SWF LOVE (ASを使わないFlash勉強会)

DefineShape StyleChange (ShapeRecord@type=1)

StateNewStyles path の書き出し Style レジストリの更新

StateFillStyle0, StateFillStyle1, StateLineStyle 次にの LineTo | CurveTo の対象のスタイルを変更 全てが (>0) なら次のエッジは <path>3 ノード分に作用

StateMoveTo moveTo は絶対値

Page 92: SWF LOVE (ASを使わないFlash勉強会)

DefineShape

fillStyle0

fillStyle1

moveTo(x, y) lineTo(x, y)

lineStyle

Page 93: SWF LOVE (ASを使わないFlash勉強会)

DefineSprite ベクターやラスター等のイメージデータやテキスト、また

Sprite など表示オブジェクトを配置したり、アニメーションさせたりする FlashLite ではタイムラインを持つ MovieClip のみ ActionScript も内包 Stage 全体も仲間

Page 94: SWF LOVE (ASを使わないFlash勉強会)

DefineSprite PlaceObject 毎に ,<use> に変換 全体を <g> でグループ化 アニメーションはまずは考えないので、その他のタグは無視します SVG に変えるだけなら PlaceObject2,3 の情報は要らない

Page 95: SWF LOVE (ASを使わないFlash勉強会)

DefineSprite CharacterId

xlink:href=“#< ここ >”;

Depth 表示順

Matrix transform=“matrix(< ここ >)”

ColorTransform opacity=“< ここに AlphaMultTerm>” feColorMatrix フィルタが理想だが実際はブラウザが対応してない

Page 96: SWF LOVE (ASを使わないFlash勉強会)

Stage Define 定義は <defs> で登録する Stage の PlaceObject(<use>) を <g> の中に記述 SWF Format では 1px=20 で表現しているので

root 直下の g には transform=“scale(0.05)”

Page 97: SWF LOVE (ASを使わないFlash勉強会)

Stage<svg> <defs> <image id=“c1” xlink:href=“foo.jpg” width=“100” height=“10” /> <g id=“c2”> <path d=“…”> </g> </defs> <g transform=“scale(0.05)”> <use> <use> </g></svg>

Page 98: SWF LOVE (ASを使わないFlash勉強会)

SWF を SVG にすると iPhone/Android で見るサムネイルはクリア ガラケーのサムネイルも SVG   >   Image すれば

SWF > Image よりも楽に動的に生成できる(変換用に Flash を起動するサーバーとか要らない) アニメーションさせると嬉しい

Page 99: SWF LOVE (ASを使わないFlash勉強会)

ご清聴ありがとうございました