第4回 ドラッグと衝突判定(10月20日)

本日の課題

  • インスタンスのドラッグと衝突判定を使ったムービーを作成する
  • サンプル:
  • サンプルソースのダウンロード:081020_f.zip

インスタンスのドラッグ

  • インスタンスのドラッグはstartDragメソッドを使う
  • ドラッグの終了はstopDragメソッドを使う
  • 例:
    my_mc.onPress = function() {
      this.startDrag();
    }
    my_mc.onRelease = function() {
      this.stopDrag();
    }
    my_mc.onReleaseOutside = function() {
      this.stopDrag();
    }
  • オプションでドラッグできる領域を指定できる
  • 例:
    my_mc.onPress = function() {
      this.startDrag(false, 0, 0, 100, 200);
    }
  • 同時に2つ以上のインスタンスをドラッグすることはできない

衝突判定

  • インスタンスの衝突判定はhitTestを使うことで簡単に判定できる
  • 例1:インスタンス同士が接触しているか判定する
    if (target_mc.hitTest(my_mc)) {
      trace("hit!");
    }
  • 例1ではhitTestの有効領域がインスタンスを囲む矩形であることに注意
  • 例2:あるインスタンスの中心点が他のインスタンスの中に入っているか判定する
    if (target_mc.hitTest(my_mc._x, my_mc._y, true)) {
      trace("hit!");
    }
  • 例2では3番目の引数をtrueにすることでインスタンスのシェイプを有効領域とすることが可能
  • 引数に使える座標はグローバル座標である点に注意

課題評価ポイント

  • クラス定義ファイルが正しく作成できているか?(20点)
  • クラス内でのイベントハンドラが正しく定義できているか?(20点)
  • インスタンスのドラッグが正しく設定できているか?(20点)
  • インスタンスの衝突判定が正しくできているか?(20点)
  • 効果的なムービーが作成できたか?(20点)

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

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

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