第6回 クラスの継承(11月3日)

本日の課題

  • クラスの継承を使ったムービーを作成する
  • カスタムクラスperspectiveを使い3Dムービーを作成する
  • サンプル:
  • 教材のダウンロード:081103_k.zip
  • サンプルソースのダウンロード:081103_f.zip

クラスの継承

  • クラスの機能を変更したり拡張したい場合に元のクラスを編集してしまうと汎用性が損なわれる場合がある
  • クラスの継承を利用するとクラスの汎用性を損なわずにクラスの機能を変更したり拡張することができる
  • 複数のクラスで機能を共有させたい場合にもクラスの継承が使われる
  • 継承するクラスをサブクラス、継承されるクラスをスーパークラスと呼ぶ
  • カスタムクラスだけではなくビルトインクラスも継承が可能

ビルトインクラスの継承

  • ビルトインクラスの機能を拡張した独自のサブクラスを作成することができる
  • MovieClipクラスを拡張するとインスタンスを配置するだけでサブクラスが機能する(教材のsnow.flaを参照)
  • MovieClipクラスを継承させたクラスの例:
    class fall extends MovieClip {
      // onEnterFrameハンドラを上書き
      function onEnterFrame() {
        this._y += 10;
      }
    }
  • MovieClipクラスを継承させたクラスをシンボルに適用するにはリンケージプロパティのAS2.0クラスの欄にクラス名を記述する

カスタムクラスの継承

  • スーパークラスは特別な設定は必要なくどんなクラスでもスーパークラスになることができる
  • スーパークラスで定義されているプロパティやfunctionはサブクラス内で自由に使うことができる
  • サブクラスでスーパークラスで定義されているfunctionと同じ名前のfunctionを設定した場合はサブクラスのfunctionが適用される
  • カスタムクラスperspectiveを継承したサブクラスの例
    class ufo extends perspective {
      var zSpeed:Number = -200;
      function fly():Void {
        mc_z += zSpeed;
        // mc_zはスーパークラスで定義されているプロパティ
        this.perspectiveView();
        // perspectiveViewはスーパークラスで定義されているfunction
      }
    }

課題評価ポイント

  • クラス定義ファイルが正しく作成できているか?(20点)
  • カスタムクラスの継承が正しくできているか?(20点)
  • スーパークラスのプロパティやfunctionをサブクラスで正しく使えているか?(20点)
  • リンケージシンボルの設定やムービークリップのアタッチが正しくできているか?(20点)
  • 効果的なムービーが作成できたか?(20点)

ファイル名に全角文字や記号を使わないこと

Flashファイル(*.fla)とASファイル(*.as)を提出する

提出期限は授業日の週の水曜日の午後9時