私がプログラミングの学習をはじめたころ、入門本を片手にサンプルコードをタイプしてコンパイルすることを繰り返していましたが、ただ書き写しているだけという感覚しか持てないでいました。しかし、ディスプレイ上に表示されるグラフィックを描くプログラムになると、同じ書き写しであるのに楽しいのです。
フラクタルであったり(図1)、マウスで線を描画するような簡単なプログラムでしたが、表示された絵を視覚することを通して、ソースコードと実行結果が繋がっているように思え、プログラミングという行為を実感できたからだと思います。
ディスプレイに結果が現れるプログラムは楽しいし興味が持てる。これは一般的な感覚と異なるかもしれませんが、私にとってはプログラミングを行う主要な動機です。この連載では、Flashによるグラフィック描画のプログラミングについて解説していきます。その楽しさを感じていただければ幸いです。
Flashによるグラフィク描画
グラフィック描画の基本
はじめに、Flashでグラフィックを描画するプログラムの基本を確認しておきましょう。
以下のプログラムをご覧ください(リスト1)。実行すると線が赤、塗りが白の矩形が描画されます(図2)。
プログラム中の「graphics」はグラフィックを描画するときに利用するクラス(flash.display.Graphics)のインスタンスです。Flashにはラスタ画像データ(flash.display.BitmapData)に直接ピクセルを描画するAPIもありますが、大抵はこのGraphicsクラスを使います。例で使用されているGraphicsクラスのAPIを紹介します[1]。
線の指定(lineStyle)
描画する線の色、透明度、幅などを指定できます。線をグラデーションで描画することもできます。
塗りの指定(beginFill,endFill)
描画する塗りの色、透明度を指定できます。beginFill()からendFill()の間に記述されたシェイプ、またはパスに指定した塗りが適用されます。単色のほか、グラデーションや画像データで塗るAPIも提供されています。
シェイプ(drawRect)
シンプルな四角形を描画する関数です。このほかに楕円を描画する関数などが提供されています。
パス
例には含まれませんが、形状の頂点を個別に指定し、直線や曲線(2次ベジェ曲線)を組み合わせることで自由な形を描画できます。シェイプ(矩形や楕円)はパスで再現することができ、これが形状の汎用的な記述方法となります(リスト2)。
まとめると「線と塗りを指定してパスで形状を記述する」ことが描画の基本だと考えていただいて結構です。
ライブラリの活用
Graphicsクラスで提供されている描画APIは前述のようにシンプルなものです。複雑なグラフィックの描画はそれらの描画APIを組み合わせることになります。この場合、同じ処理を何度も記述する、手続きが多いなど冗長なプログラムになりがちです。
そのため、グラフィック描画をプログラムする場合にはライブラリを利用することが多々あります。例えば、3Dのライブラリとして有名な「Papervision3D」を利用すれば、3次元グラフィック描画の複雑な処理を記述する必要がありません。
本連載で利用するFrocessingは、そんな描画系ライブラリのひとつです。
Frocessingについて
Frocessingとは
"Frocessingとは何か?"その説明をする前に「Processing」について簡単に紹介したいと思います。Processingとはグラフィック制作向けのプログラムを行う開発環境(ソフトウェア)です。独自の描画APIとシンプルな開発ツールによって、手軽に、直感的にプログラミングできるよう工夫されています。
Frocessingは、そのProcessingのような描画APIをActionScript3で利用できるようにしたライブラリです。Processingのように手早くプログラミングできることを目的としています。
Graphicsとの違い
次のプログラム(リスト3)はリスト1のプログラムをFrocessingを利用して記述したものです。
同じ処理が手早く書けることが分かっていただけると思います。これだけを見ると大きな違いはないように思えますが、いろいろな描画プログラムを試す場合など、小さな違いの積み重ねがプログラミングのスピードや快適さに与える影響は少なくないと思います。
Frocessingの準備
プログラミングをはじめる前に、プログラム環境とFrocessingライブラリを準備します。後述するWonderflを利用する場合、この準備は必要ありません。ローカル環境で制作する際の参考にしてください。
プログラム環境の準備
この連載ではActionScript3のプログラミングを行います。ActionScript3で書かれたプログラムをコンパイルするには、Flash CS3以降か、FlexSDKを用いるとよいでしょう。FlexSDKは無料で利用できる開発環境ですので、ActionScriptによるプログラムを試したい方にお勧めです。FlexSDKのセットアップ、使用方法、ActionScriptの基本については「プログラマのためのFlash遊び方」をご覧ください。
Frocessingのダウンロード
Frocessingライブラリは、日本最大のFlash・ActionScriptのオープンソースコミュニティである「Spark Project」で公開されています。
Frocessingのプロジェクトページ(図3)を開くと「Source Code」のブロックにライブラリのデータについて情報が記載されています。最新のソースファイルはSVNリポジトリから閲覧・ダウンロードが可能ですが、今回はZIP形式のデータをダウンロードして使用します。現在の最新版である「frocessing-0.5.7.zip」をダウンロードしてください。
ライブラリの設置
ダウンロードしたZIPを解凍すると「frocessing」というディレクトリが含まれています。このディレクトリがライブラリの本体です。既にライブラリを置く場所が決まっている場合は「frocessing」ディレクトリを所定の場所へコピーすれば利用が可能となります。今回は説明のために「C:\test\」にコピーしたものとします。
Frocessingのサンプルコード
まずは、以下のFlashをご覧ください。
これはFrocessingを利用してプログラミングされた簡単なグラフィック描画のサンプルです。時間経過とともにランダムな曲線が描画され、マウスクリックで描画内容がクリアされます。このプログラムのソースは以下のようになります。
このプログラムを書き写すか、ファイルを保存して、先ほどのライブラリと同じディレクトリに置いてください。
次にサンプルコードをコンパイルして動作させるためのいくつかの方法をご紹介します。
FlexSDKでコンパイルする
サンプルコードのファイルを作成するとディレクトリが図5のような状態になっていると思います。
FlexSDKを利用する場合は、コマンドラインツールでコンパイルを行うので、まずはプログラムのあるディレクトリに移動します。
ここで以下のコマンドを実行します。
問題なければサンプルコードがコンパイルされ「FrocessingSample.swf」が生成されます。このSWFファイルをブラウザにドラッグ&ドロップすることで実行結果を確認できます。
FlashCS4(CS3)でコンパイルする
サンプルコードのパブリッシュ
FlashCS4(CS3)でコンパイルする場合には、新しくflaファイルを作成します(図6)。
次にflaファイルのドキュメントクラスにサンプルコードを指定します。このときステージサイズやフレームレートも設定しておきます(図7)。
ここでメニューから「制御→ムービープレビュー(Ctrl+Enter)」を選択するとSWFファイルが生成され、同時に実行結果を見ることができます。
フレームスクリプトに書く
FlashCS4(CS3)で制作する場合には、フレームスクリプトに直接プログラムを書くこともできます。今回のサンプルコードを例に手順をみていきましょう。
新しくflaファイルを作成し、ドキュメントクラスに「frocessing.display.F5MovieClip2DBmp」を指定します。これはサンプルコードで記述したクラス(FrocessingSample)のスーパークラスにあたります。ステージサイズやフレームレートも設定しておきます(図8)。
次に先頭のフレームを右クリックし「アクション」を選択して「アクション-フレーム」ウインドウを開きます。このウインドウに記述されるプログラムをフレームスクリプトといいます。フレームスクリプトではクラスの定義などを行わずに、変数や関数だけを書くことになります。サンプルをフレームスクリプトで記述すると以下のようになります。
ここでムービープレビュー(Ctrl+Enter)を実行すれば、SWFが生成され実行結果を見ることができます。この方法であれば別途クラスファイルを作成する必要がなく、より手軽にグラフィック描画のプログラムを試すことができます。
Wonderflを利用する
Wonderflとは
最後にWonderflの利用を紹介します。Wonderflはブラウザ上でActionScriptをコンパイルしFlashを制作することができるWebサービスです。面白法人KAYACが無料で提供しています。本連載で利用するFrocessingもサポートされています。
Wonderflの概要や利用方法については「ブラウザだけでできる!wonderflではじめるFlash制作」をご覧ください。
Wonderflでサンプルコードを実行する
実際にWonderfl上で動作するFlashを見てみましょう。再生ボタンをクリックするとFlashが開始させます。
タイトル「FrocessingSample - wonderfl build flash online」のリンクからWonderflを表示すればFlashとプログラムを合わせて見ることができます(プログラムは今回のサンプルと同じものです)。
Wonderflでforkする
Wonderflの特長としてforkと呼ばれる機能があります。投稿されたプログラムを元に新しくプログラムを作成する別名保存のような機能です。試しにサンプルコードをforkして、線に色を付けたFlashを制作してみました。
グラフィック描画のプログラムはパラメータを変化させることでいろいろな表情の結果が現れることもたのしさの一つですので、forkを積極的に活用してはいかがでしょうか。
まとめ
初回はFrocessingの概要とプログラム環境について説明しました。グラフィック描画のプログラミングを楽しむには手軽に試せることが大切ですので、自分にあった制作環境を選んでください。次回からはFrocessingの描画APIの説明をはじめたいと思います。
なお、本連載で掲載するサンプルはWonderflで公開していく予定です。まだWonderflのIDをお持ちでない方はこの機会に登録してみてはいかがでしょうか。