Webデザインの勉強と製作 | あかとんぼ

フェリカテクニカルアカデミーの学習をベースに、Webについての勉強と製作の過程をまとめています。

[Flash]⑦MovieClipのドラッグ&ドロップ&スナップ

ドラッグアンドドロップ

ムービークリップを自由にドラッグ&ドロップする。

手順
var box: MovieClip;

/* Press,Releaseに関数割り当て */
box.onPress = startMoving;
box.onRelease = stopMoving;

/* ドラッグを開始する関数 */
function startMoving():Void
{
     this.startDrag();
}

/* ドラッグを終了する関数 */
function stopMoving():Void
{
     this.stopDrag();
}

f:id:akatonbo_web:20150524010227p:plain

startDrag()メソッド
  • 呼び出すだけでそのムービークリップをドラッグ処理できる
  • stopDragメソッドが呼び出されるまで続く
  • 他のムービークリップでstartDragを呼び出されるまで続く
  • ドラッグ出来る範囲を指定できる
  • this.startDrag(false, 左上X座標, 左上Y座標, 右下X座標, 右下Y座標)
ドラッグできる範囲をステージと同じにしたいとき

ドラッグしてスナップ

 箱をドラッグしてドロップ地点に近づくと吸い付くように移動させる。

function stopMoving():Void
{
     var dropTarget:MovieClip = eval(this._droptarget);
     this.stopDrag();

     if( dropTarget != undefined )
     {
       this._x = dropTarget._x;
       this._y = dropTarget._y;
     }
}
  • var dropTarget:MovieClip = eval(this._droptarget)▶this(box)がドロップした位置に存在するムービークリップをdropTargetに取得.
  • if( dropTarget != undefined )▶ドロップ位置になにも存在しない(undefined)時通常のドラッグ処理.
eval関数
  • このスクリプトでは、droptargetに取得する際evalを指定しないと、パスの文字列を取得するだけである
  • evalはインスタンス名やターゲットパスを表す文字列を、MovieClip型の変数に変換して返すことができる
  • 変換できない場合はundefinedを返す