...

swfassistで学ぶFlashの仕組み - be

by user

on
Category: Documents
6

views

Report

Comments

Transcript

swfassistで学ぶFlashの仕組み - be
swfassistで学ぶFlashの仕組み
2008.01.26 新藤 さかとく 愛大
@ 酒徳カンファレンス
自己紹介
•新藤 愛大といいます
•新藤 愛大といいます
•何故酒徳カンファレンスで喋っているのか
よくわかりません
•新藤 愛大といいます
•何故酒徳カンファレンスで喋っているのか
よくわかりません
•19歳です
•新藤 愛大といいます
•何故酒徳カンファレンスで喋っているのか
よくわかりません
•19歳です
•フリーランスのFLASHerです
•新藤 愛大といいます
•何故酒徳カンファレンスで喋っているのか
よくわかりません
•19歳です
•フリーランスのFLASHerです
•3度の飯よりActionScriptが好きです
www.be-interactive.org
変態 ActionScripter でぐぐる
www.libspark.org
BeInteractive!の人 = バイトコードの人
違うよ。全然違うよ。
ふつうのFLASHerです
plash.jp
今日のお題
swfassist
ActionScriptでswfバイナリを
生成するためのライブラリ
MingのAS版のようなもの
BeInteractive!の人 != バイトコードの人
swfassistでswfを生成することで
Flashの仕組みを知ろう
デモ
千里の道もバイナリから
“CWS”
CWS = 圧縮されたswf
FWS = 圧縮されていないswf
■ ヘッダー
■ タグ
■ シグネチャ ■ バージョン
■ ファイル長
■ 画面サイズ ■ フレームレート ■ フレーム数
■ FileAttributes ■ SetBackgroundColor ■ DefineShape4
■ PlaceObject2 ■ ShowFrame
■ End
タグ
swfを構成する命令群
定義タグ + コントロールタグ
定義タグ
内部的な情報を定義するためのタグ
DefineShape - 図形情報の定義
DefineFont - 文字情報の定義
DefineSound - 音情報の定義
DefineBits - 画像情報の定義
キャラクターID という識別子を持つ
コントロールタグ
ムービーをコントロールするためのタグ
SetBackgroundColor - 背景色の変更
PlaceObject - 画面への配置
RemoveObject - 画面からの削除
ShowFrame - 画面の更新
キャラクターID を通じて定義タグで
定義した図形や文字をコントロールする
タグは上から順番に実行
■ FileAttributes ■ SetBackgroundColor ■ DefineShape4
■ PlaceObject2 ■ ShowFrame
■ End
■ SetBackgroundColor(color=0xffffff)
背景色を白(0xffffff)に変更
■ DefineShape4(id=1)
図形(4つの四角)をid=1で定義
■ PlaceObject2(id=1)
定義したid=1の図形を画面に配置
■ ShowFrame
画面の更新
■ End
終了
Playerのバージョンが上がると
使えるタグの数が増える
Version1
Version2
Version3
Version4
Version5
Version6
Version7
Version8
Version9
-
18
25
37
38
41
46
48
56
62
(+7)
(+12)
(+1)
(+3)
(+5)
(+2)
(+8)
(+6)
swfを生成するということは
これらのタグを生成するということ
43
02
FF
FF
FF
0100 0011 0000 0010 1111 1111 1111 1111 1111 1111
02
43
FF
FF
FF
0000 0010 0100 0011 1111 1111 1111 1111 1111 1111
02
43
FF
FF
FF
0000 0010 0100 0011 1111 1111 1111 1111 1111 1111
10bits
6bits
3bytes
■ タグID(9番)
■ タグ長(3byte) ■ タグ引数(ボディ)
やってらんない
swfassist 登場
実際のコードを交えつつ説明
アニメの基本
短い間隔で少しずつ絵を動かす
フレーム
パラパラ漫画の紙1枚に相当
フレームレート 24fps
= 1秒間に24フレーム表示
ShowFrame
画面を更新して
次のフレームになるまで待つ
1フレーム目
2フレーム目
次フレームまで待つ
ShowFrame
PlaceObject &
RemoveObject
次フレームまで待つ
ShowFrame
PlaceObject &
RemoveObject
■ DefineShape(id=1)
■ PlaceObject(id=1, depth=1, x=..., y=...)
■ ShowFrame
■ PlaceObject(depth=1, x=..., y=...)
■ ShowFrame
■ PlaceObject(depth=1, x=..., y=...)
■ ShowFrame
■ PlaceObject(depth=1, x=..., y=...)
■ ShowFrame
■ RemoveObject(depth=1)
Depth(深度)
オブジェクトを配置する場所の識別子
ひとつの深度にはひとつの物しか置けない
深度1
深度2
再び実際のコードを交えつつ説明
DefineShape
x: -20
y: +20
y: -20
x: +20
再び実際のコードを交えつつ説明
swfassist.libspark.org
“SWF and FLV File Format Specification”
http://www.adobe.com/licensing/developer/
まとめ
誰かswfassistの使い道を教えて下さい
ご清聴ありがとうございました
Fly UP