東京本社 TEL : 03-5728-5580

支社連絡先一覧

mypage

フェローズe-ラーニングログイン

3.0って、ちょっとしたバージョンアップではないの?

「バージョンアップというよりも・・・。」

まったく別物と思った方がよい様です。

とういわけで、はじまりました「ActionScript3.0」講座。
ActionScript2.0・・・というか、ちょっとした3.0になる前のActionScriptをそこそここなせる様になってきた。
そんな方々の手助けとなれば幸いです。

3.0って、そんなに違うの?

「繰り返しますが、全然別物です。」

2.0があるということは、当然のようにかつて「ActionScript1.0」というものが存在しました。
1.0から2.0へ変わった時は、いわゆる「機能拡張」で1.0のプログラムもほとんどそのまま動きました。

ただ、「3.0」はそうはいきません。
1.0~2.0への思想は気持ちよいくらい棄ててしまっています。

一言でいうと

オブジェクト指向が強くなった。

ということです。

オブジェクト指向?

「そう。オブジェクト指向」

本講座の読者にはお馴染みかもしれませんが、「オブジェクト指向」について少しおさらいしておきましょう。

「オブジェクト」とは、「物・物体」といった意味になります。

■オブジェクト指向プログラミング概念

すべてのものを「オブジェクト」とみなし、その「オブジェクト」に対してデータと操作をモデル化する。

ここで言う「データ」「操作」が

■プロパティ

■メソッド

です。

何かしらの形でオブジェクト指向ブログラム、例えばActionScript2.0やJavaScriptに触れたことのある方ならば聞き慣れた単語だと思います。

■オブジェクト指向プログラミング基本

・まずは必要なオブジェクトを作る
・作ったオブジェクトのデータを見たり変えたりする。(プロパティ)
・作ったオブジェクトに対して何かを指示する。(メソッド)

具体的に「Date」オブジェクトで考えてみましょう。

日時のオブジェクトですね。

「まずは身近な概念からいきましょう。」

まずはオブジェクトを作らなければなりません。

■Dateオブジェクト生成

var MyDateObject:Date = new Date();

「MyDateObject」という「Dateオブジェクト」を生成しています。
「var」は「変数」であることを示す予約語ですが、グローバルな変数である必要がない場合はなるべく「var」を宣言します。
これも3.0へステップアップする方々ならば重要な点です。
「var」とすることで、なるべく速く処理のできる変数を用意してくれます。

「MyDateObject」の後の「:Date」は「Dateクラス」であることを明示しています。

クラス?

「忘れてしまっていたり、意味が曖昧になっているかもしれませんが」

ここでもう一度整理しておきましょう。

■クラスとは『オブジェクトの設計図』

■インスタンスとはクラス(設計図)によって作られた『オブジェクトの実体』

となります。
「ビルA」の設計図(クラス)に従って実際に「ビルAー1」を建てたとします。
さらに同じ「ビルA」に従って別の場所に「ビルAー2」を建てたとします。
理論上、全く同じビルの実体が二つできあがります。

ActionScript等のオブジェクト指向のプログラムには色々なクラス、つまり設計図が用意されています。
それらの設計図から必要なものを探しだし、実体、つまりインスタンスを生成することで目的を達成するのです。

先の例では「Date()」が「Dateクラス」を表し、「new Date();」で「Dateクラス」という設計図から「MyDateObject」というインスタンス(実体)を作り上げているというわけです。

でも、ActionScriptは元々オブジェクト指向ではなかったのでしょうか?

「もちろんそうなのですが・・・。」

前述したとおり3.0ではオブジェクト指向がより強くなっており、オブジェクトを意識しなければほとんど何もできないと考えた方がよいでしょう。

例えば2.0でマウスがクリックされた時の処理を実装する場合

playButton.onPress = function(){
//マウスボタンが押された時の処理
}

といった記述になります。
「playButton」という名前のインスタンスに対するもので、その上でマウスクリックされた処理を定義しています。
或いは「playButton」インスタンス自体にスクリプトを定義する方法もあります。

on(press){
//マウスボタンが押された時の処理
}

3.0でも同じというわけには・・・

「いかないんですね・・・」

これが。

3.0では↓の記述となります。

playButton.addEventListner(MouseEvent.CLICK,playButtonFunction);
function playButtonFunction(e){
//マウスボタンが押された時の処理
}

「addEventListner()」は見覚えのある方も多いかと思いますが、2.0でもよく使われてきました。
3.0では基本的に全てこの形となります。

2.0以前では、あること(この場合で言うマウスクリック時の処理)を実現するのに、上記の様に複数の方法がありました。
3.0ではオブジェクト指向を意識して、全てイベントという統一した流れで処理を行わなければなりません。
同じことをやるのに、ココではこう、あそこでは違う記述・・・とある意味プログラムが「汚くなる」のを防いでもくれます。
「汚い」「汚くない」は感性の問題かもしれませんが、少なくとも「汚くない」ものは扱いやすいと考えます。

確かに、前述の2.0の方法の方がわかりやすく、かつ手軽だと思います。
Flash側から言うとこれらは「人間様」のためのサービスであり、コンピュータ的にはメリットはありません。
2.0から3.0になり、よりテクニカルな思考が必要になると考えてください。

実は、3.0の方が処理時間もかなり速くなっているんですよ。
苦労する甲斐はあるハズです。