強火で進め

このブログではプログラム関連の記事を中心に書いてます。

「ActionScriptを使わないFlash勉強会 #1」に参加してきた

ActionScriptを使わないFlash勉強会 #1 - [PARTAKE]
http://partake.in/events/2f2588c4-6a00-465c-b50f-752138a58b70

yoya「PHPでのSWF編集とその応用」

@yoya

スライドなどはこちらから。

ActionScriptを使わないFlash勉強会 #1 - yoyaのメモ
http://d.hatena.ne.jp/yoya/20110422/swf

niwauu「動的Flashアプリ『まめフラスコ』の話」

@niwauu

王子南交差点
http://libpanda.s18.xrea.com/

ken39arg「swf愛について」

@ken39arg

2011-04-23 - 続・ken39arg
http://d.hatena.ne.jp/ken39arg/20110423

  • wallaby
    • Adobe純正のCS5プラグイン
    • いろいろと不完全
    • CSSアニメーションを多様しているためアニメーションが同期しない
    • サイズがデカイ
  • gordon
    • jsでswfバイナリを解析してSVGを創りだす
    • 現在更新が停止している
  • smokescreen
    • 基本的にgordonと同じでもうちょっと進んでいる
    • 2010/10にオープンソースの予告が有ったけどそれから音沙汰なし
    • 作者のgithubでいつの間に公開されていたけど以前のものからは色々と変更された部分有り
  • 自作しよう!!
  • 全体を で囲む
  • bitmapは
  • グラデは
  • ラインごとにセットは大変
  • style毎に変換
  • DeltaX DeltaYは絶対値に計算しなおす
  • LineTo は L に
  • CurveTo は Q に
  • toの絶対値はアンカーの位置
  • PlaceObject毎にに変換
  • CharacterId
    • xlink:href="#<ここ>";
  • Depth
    • 表示順
  • Matrix
    • transform="matrix(<ここ>)"
  • Stage
    • Define定義は(見えなく成るタグ)
  • StageのPlaceObject()をの中に記述
  • SVGだとラインサイズがデフォルト20なので1/20にする
  • JavaScriptでパースまでやると遅いのでパースはサーバで行い、画像は href="" で参照出来るように

mzp「OCamlでFlash9をいじくってたときの話」

@mzp

  • AVM2の特徴
  • AVM1より高速に動作する
  • JITも有るよ
  • AS3の新機能をサポート
  • E4Xなど
  • こんなん作りましたHappyABC
  • Flash9を吐くScheme(っぽい何か)
  • Tamarin[2]で実行出来る
  • Flash Player かr AVM2だけを抜き出したもの
  • AdobeMozillaに技術提供している
  • Firefoxには組み込まれていない
  • ダンプしてみる
  • tamarin付属のabcdump[3]でダンプ出来る
shell abcdump abc -- hello.abc
  • スタックマシン
    • AVM2はスタックマシン
    • 命令はスタックにデータをpush/popしながら動作する
  • AVM2は純粋なスタックマシンでは無い
    • データ用と変数スコープ用の2つのスタックを持つ
    • 引数の受け渡しはスタックでは無く、レジスタを使用
  • AVM2にはレジスタも有る
    • 0番目のレジスタにはthisが入っている
    • 1以降は引数の受け渡しに使われる
  • ABCで使われるデータ型
    • s24 24ビットのsigned int
    • u8, u16: nビットのunsigned int
    • u30, u32, s32 可変長の(un)signed int
      • 最大5バイト
      • 上位1ビットが立っていれば後続有り
    • d64 : 倍精度浮動小数点数(double)
  • 命令の形式
    • バイナリに変換されて入っている
  • 引数のある命令
    • kill 1は1が引数になっている
      • opcodeは0x08
      • 仕様書によると引数はu30
  • 定数を使う命令
    • pushstring
      • opcodeは0x2c
      • 引数はu30
  • 定数プール
    • 文字列定数などは定数プール(constant pool; cpool)にまとめられている
    • 定数を使うばいとコードでは、定数プールのインデックスを使う
  • ABCの定位数
    • 普通のプリミティブ型
      • int, uint, string, double
    • 名前空間
      • パッケージ名+可視性(publicとか)
    • 名前空間の集合
    • マルチネーム
      • クラス名やプロパティ名に使われる
  • ABCはTamarinを使うと、直接実行出来る。
  • AS3とほぼ1対1
  • AVM2 Overview(公式ドキュメント)
  • swfmill(trank)
  • ABCのダンプが可能

emorins「DoActionからJava VMバイトコードに変換する話」

@emorins

  • 今回やる事
    • 簡単な加算演算と変数への代入
i = 4;
i = 2 + 3;
ActionPush:i
ActionPush:4
ActionSetVariable:
ActionPush:i
ActionPush:5
ActionSetVariable:
  • ここからJavaのコードに変換する

Q : 何故?AVM2じゃなくてFlash Lite向け
A : 携帯向けのswfをAndroid向けなどのJavaに変換したかった

ryopei「Java厨とはじめてのFlash

ローカルで専用ツールでswf作成、サーバ(GAEサーバ)にアップ後にキャラ名などを変換したものを携帯へDL

  • 修正のポイント
    • タグの抜けが多い。終了タグが抜けている場合
    • そもそもタグの書き込み処理が抜けている
  • サーバー再度でのFlash書き換え
    • 先頭フレームへの変数の挿入
    • 画像の入れ替え
  • 先頭にSetVariableをするタグを追加
  • 画像の入れ替え
    • そもそもPNGを直接埋めれない。
    • DefineBitsJPEG3い変換(JPGE+Alpha値のzlib圧縮)
  • Javaでswfを生成をやると
    • 良い点
      • クライントからサーバサイド、画像処理までほとんどの機能が標準で提供されている
    • 悪い点
      • unsigned型が無いのでバイナリ編集がつらい

Togetter

Togetter - 「ActionScriptを使わないFlash勉強会 #1 まとめ」
http://togetter.com/li/127308

イベント後

イベント後も会場の利用時間が残っていたので「発表したい人は発表を…」という時間が有りました。

そこでyoyaさんが紹介していたSWF構造を解説した分り易いスライド。
こちらのPDFの方がより、新しい物の様です。

Hacking swf
View more presentations from Saurabh Mathur