[Flash]⑦MovieClipのドラッグ&ドロップ&スナップ
- ドラッグアンドドロップ
- startDrag()メソッド
- ドラッグ範囲をステージに合わせる
- ドラッグしてスナップ
- eval関数
ドラッグアンドドロップ
ムービークリップを自由にドラッグ&ドロップする。
手順
var box: MovieClip; /* Press,Releaseに関数割り当て */ box.onPress = startMoving; box.onRelease = stopMoving; /* ドラッグを開始する関数 */ function startMoving():Void { this.startDrag(); } /* ドラッグを終了する関数 */ function stopMoving():Void { this.stopDrag(); }
startDrag()メソッド
- 呼び出すだけでそのムービークリップをドラッグ処理できる
- stopDragメソッドが呼び出されるまで続く
- 他のムービークリップでstartDragを呼び出されるまで続く
- ドラッグ出来る範囲を指定できる
- this.startDrag(false, 左上X座標, 左上Y座標, 右下X座標, 右下Y座標)
ドラッグできる範囲をステージと同じにしたいとき
- ステージと同じサイズのムービークリップを作り背景に置く(インスタンス名 base)
- 次のように記述
- this.startDrag( false, 0, 0, base.width - 1, base.height - 1 );
ドラッグしてスナップ
箱をドラッグしてドロップ地点に近づくと吸い付くように移動させる。
- 動かしたいインスタンスを作る(インスタンス名「box」)
- 吸い付く地点(DROP)を作る(インスタンス名「floorSign」)
- boxとfloorSignの中心点をそれぞれ、中央下部に設定
- function stopMoving()の記述を変更▶
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)時通常のドラッグ処理.