SuzukaでActionScriptを利用する際には,自作のクラス(カスタムクラス)を作成し,利用することもできます。ただし,Suzukaでのカスタムクラスは,Flashで外部クラスファイルを作成し,importして使用するような形式ではありません。サンプルを作りながら,その使い方をご紹介します。
作成するサンプルは,簡単なお絵かきアプリケーションです。出来上がりは,図1のようなものです。
図1●簡単なお絵かきアプリケーション [画像をクリックするとムービーを表示します。Flashのプロジェクト・ファイルをこちらからダウンロードできます] |
このアプリケーションでは,マウスでドラッグした座標の位置を覚えておき,一定のタイミングで,その座標を元に線を描画しています。また,線を描画する際に,ちょっとずつ座標を動かし,揺れているような表現をしています。
このようなプログラムを作成するために,3つのカスタムクラスを作成し,利用していきます。
カスタムクラス | 内容 |
---|---|
DrawPointクラス | 描画する座標と,その座標での描画モードを管理するクラス |
DrawPointListクラス | DrawPointクラスをまとめて管理するクラス |
Canvasクラス | DrawPointListに従って,線を描画するキャンバスとなるクラス |
Suzukaにおけるカスタムクラスとは
では,早速作成してみましょう。まず,マウスでドラッグした位置の座標を管理するためのクラスである「DrawPointクラス」を作成します。
Suzukaでカスタムクラスを作成する場合には,[シンボルリスト]を右クリックして表示されるメニューから,[アイテムの追加]-[クラスを追加]を選択します。[クラスのプロパティ]ダイアログボックスが表示されるので,[クラス名]欄に,クラス名を入力し,[OK]ボタンを押します(図2)。今回のクラス名は,「DrawPoint」ですね。
図2●クラスのプロパティ |
[シンボルリスト]に追加された。クラスアイテムを選択し,[シンボルリスト]上部の,[編集]ボタンを押します。すると,[レイヤーリストとタイムライン枠]があらかじめアクションレイヤーがひとつ用意された,カスタムクラス専用の物に切り替わります(図3)。このアクションレイヤーにカスタムクラスの定義を記述していきます。
図3●カスタムクラスの編集 |
なお,クラスアイテムでは,タイムラインが切り替わると言っても,フレームを追加したり,グラフィックなどのアイテムを追加したりすることはできません。便宜的に,タイムラインという表示方式を使っているだけで,クラスアイテムは,クラス定義をスクリプトとして記述するだけのアイテムとなっています。
Flashなどでカスタムクラス定義を記述する場合には,通常,
|
のような形で記述を行いますが,Suzukaの場合,上記の定義は,次のように記述します。
|
「class{}」という記述はせずに,ダイレクトに定義の内容から書きはじめます。また,変数を宣言した時と同様に,データ型の指定はできません。さらに,「public」や「private」などのアクセス制御用のステートメントは使用できません。全部publicな状態と考えてください。
そのほかにも,筆者の気がついた限りでは,Flashで作成するActionScript2.0用のカスタムクラスと,Suzukaのカスタムクラスには,次のような違いがあります(表2)。
違い | 説明 |
---|---|
class{}で囲まなくても良い | クラス定義をクラス名で始まるステートメントブロックで囲む必要はありません |
プロパティやメソッドの戻り値,変数のデータ型は指定しない | データ型の指定はできません |
プライベートなメンバーは作成できない | privateステートメントは使用できません |
クラスプロパティやクラスメソッドは作成できない | staticステートメントは使用できません |
アクセサは作成できない | function getや,function setなどを使用した,いわゆるgetter,setterの作成はできません |
インスタンスメンバーにアクセスするときには必ず「this」を使う | インスタンスメンバーにアクセスするときには「this」が必要です |
これらの違いを踏まえながら,カスタムクラスの定義を作成していきましょう。