オブジェクトドラッグのお勉強
2004.06.18
リアルタイムにカーソルの座標を表示するテスト /1kb
とりあえず、後々便利なので座標表示させるアクションだけ先にやっておくことに。
最初2フレームに分けて再生させてたんですが、どうもカクカクするので調べたら「enterFrame」と言うパラメータを発見!
オブジェクトをマウスでドラッグするテスト /1kb
ドラッグするのってすごい難しい技術かと思ってたんですが、ドラッグ用の関数が最初から用意されていてほんの1行で出来てしまいました。
this.startDrag(); // ドラッグ開始 this.stopDrag(); // ドラッグ終了
これだけ!!
ドラッグする場合は、深度も更新させた方が良いらしいので、
this.swapDepths(0);
も加えて、アクティブオブジェクトを最前面に出すようにしました。
素早くドラッグしたり、キャンバスの外までドラッグしようとするとマウスにくっ付いたままになるので、on に releaseOutsideもつけれ
ばいいと思ったが、そうするとマウスの外までドラッグした時に選択できなくなってしまうんですよね。
キャンバスの内側にしか移動できないようにすればreleaseOutsideをつけてもよさそうです。
しかし、そこはかとなくカクカクするんですが、、何故。
ドラッグできる範囲を制限するテスト /2kb
onClipEvent (enterFrame) {
if (Math.floor(this._x) < 0) {
this.stopDrag();
this._x = 0;
}
if (Math.floor(this._x + this._width) > _root.canvas_size_x) {
this.stopDrag();
this._x = (_root.canvas_size_x - this._width);
}
if (Math.floor(this._y) < 0) {
this.stopDrag();
this._y = 0;
}
if (Math.floor(this._y + this._height) > _root.canvas_size_y) {
this.stopDrag();
this._y = (_root.canvas_size_y - this._height);
}
}
という訳で、こんな事をしてみたわけですが、逆に扱いにくくなった気がします…。
なんかぎこちないしマウスにくっ付いてた方がまだ良いかも…。
やっぱカクカクしてますね…、座標表示が重いのかと思って余計な物全部取ってみたけど変わらないし。
位置補正だけをするテスト /2kb
位置補正だけしたらどうかしら?と考えてドロップを外した所、、
悲惨な事になってしまいました。
ブラウザに貼り付けて見た限りではそれほど判りませんが、ドロップしたまま範囲外に出てそのまま戻ってくると
離れた分だけ間がそのまま開いてしまうと言うような事に。
戻ってきた時に、位置補正しなおせば良いのだろうか。
めんどくさいのでこれはまたそのうちやろう。
