Flashゲーム講座 & アクションスクリプトサンプル集

 

マウスカーソルの座標を取得する

 

 


■マウスカーソルの座標を調べる

 
マウスカーソルの座標を調べるには、以下のムービークリップのプロパティを使用します。
 
x 座標の値を取得 _xmouse
 
y 座標の値を取得 _ymouse
 

■「グローバル座標系」のマウスカーソルの座標を調べる

 
_root から取得した場合、グローバル座標系を基点とした、マウスカーソルの座標を取得できます。
 
例) マウスカーソルの座標を取得する

// 毎フレーム実行されるイベント
onClipEvent (enterFrame) {

	// マウスカーソルの座標を取得
	var x = _root._xmouse;
	var y = _root._ymouse;

	trace("x座標:" + x + " y座標:" + y);
}
 
例) マウスカーソルの座標を取得する(Flash 6 以降)

// 毎フレーム実行されるイベント
_root.onEnterFrame = function (){

	// マウスカーソルの座標を取得
	var x = _root._xmouse;
	var y = _root._ymouse;

	trace("x座標:" + x + " y座標:" + y);
};
 

■「任意のローカル座標系」のマウスカーソルの座標を調べる

 
任意のムービークリップから取得した場合、「任意のムービークリップのローカル座標系」を基点とした、マウスカーソルの座標が取得できます。
 
例) 「任意のムービークリップ」の「ローカル座標系」を基点とするマウスカーソルの座標を取得する

// 初回に一度だけ実行されるイベント
onClipEvent (load) {

	// テスト用に適当に姿勢を変更
	_x = 0;
	_y = 0;
	_rotation = 15;
	_xscale = 50;
	_yscale = 50;
}

// 毎フレーム実行されるイベント
onClipEvent (enterFrame) {

	// マウスカーソルの座標を取得
	var x = this._xmouse;
	var y = this._ymouse;

	trace("x座標:" + x + " y座標:" + y);
}
 
例) 「ムービークリップ mc のローカル座標系」を基点とするマウスカーソルの座標を取得する(Flash 6 以降)

// 初期化処理(テスト用に適当に姿勢を変更)
mc._x = 0;
mc._y = 0;
mc._rotation = 15;
mc._xscale = 50;
mc._yscale = 50;

// 毎フレーム実行されるイベント
mc.onEnterFrame = function () {

	// マウスカーソルの座標を取得
	var x = this._xmouse;
	var y = this._ymouse;

	trace("x座標:" + x + " y座標:" + y);
};
 


 

自作のマウスカーソルを作成する

 

 


■マウスカーソルを作成する

 
マウスカーソルに、好きなイラストを使用してみます。
 
1.マウスカーソル用の素材を用意する
 
マウスカーソル用の素材を用意して、ムービークリップを作成します。
 
 
2.「マウスカーソル用のムービークリップ」にスクリプトを追加する
 
「マウスカーソル用のムービークリップ」に、以下のスクリプトを記述します。
 
マウスを動かすたびに、マウスカーソルの座標が、ムービークリップの座標にセットされるようになります。
 
例) 「マウスカーソルの座標」を「ムービークリップの座標」にセットする

// マウスカーソルを移動するたびに実行されるイベント
onClipEvent (mouseMove) {

	// マウスカーソルの座標をムービークリップの座標にセット
	_x = _root._xmouse;
	_y = _root._ymouse;
}
 
例) 「マウスカーソルの座標」を「ムービークリップ mc の座標」にセットする(Flash 6 以降

// マウスカーソルを移動するたびに実行されるイベント
mc.onMouseMove = function (){

	// マウスカーソルの座標をムービークリップの座標にセット
	this._x = _root._xmouse;
	this._y = _root._ymouse;
};
 
3. OS のマウスカーソルを非表示に設定
 
次に、OS のマウスカーソルを非表示にします。
 
Mouse.hide() を呼び出すと、Flashプレイヤー上のマウスカーソルが非表示になります。 一度でも実行すれば効果は持続します。
 
例) マウスカーソルを非表示

// OS のマウスカーソルを非表示に設定
Mouse.hide();
 
元に戻すには、Mouse.show() を呼び出します。
 
例) マウスカーソルを可視表示

// OS のマウスカーソルを可視表示に設定
Mouse.show();
 
4.マウスカーソルをスムーズに移動させる
 
最後に、Flash のフレームレートが低いときでも、マウスカーソルがスムーズに動くようにします。
 
マウスカーソル移動のイベント中に、 updateAfterEvent() 関数を呼び出します。
 
updateAfterEvent() 関数を実行すると、Flash のフレームレートに関係なく、再描画する事ができます。
 
例) マウスカーソルを移動するたびに再描画する

// 初回に一度だけ実行されるイベント
onClipEvent (load) {

	// OS のマウスカーソルを非表示に設定
	Mouse.hide();

}

// マウスカーソルを移動するたびに実行されるイベント
onClipEvent (mouseMove) {

	// マウスカーソルの座標をムービークリップの座標にセット
	_x = _root._xmouse;
	_y = _root._ymouse;

	// マウスが動くたびに再描画する
	updateAfterEvent();
}
 
例) マウスカーソルを移動するたびに再描画する (Flash 6 以降)

// OS のマウスカーソルを非表示に設定
Mouse.hide();

// マウスカーソルを移動するたびに実行されるイベント
mc.onMouseMove = function (){

	// マウスカーソルの座標をムービークリップの座標にセット
	this._x = _root._xmouse;
	this._y = _root._ymouse;

	// マウスが動くたびに再描画する
	updateAfterEvent();
};
 


 

自作のマウスカーソルをゆっくり近づける

 

 


■マウスカーソルを作成する

 
マウスカーソルの座標に、ゆっくり近づくようなマウスカーソルを作成してみます。
 
1.マウスカーソル用の素材を用意する
 
マウスカーソル用の素材を用意して、ムービークリップを作成します。
 
 
2.「マウスカーソル用のムービークリップ」にスクリプトを追加する
 
「マウスカーソル用のムービークリップ」に、以下のスクリプトを記述します。
 
変数 friction は、摩擦係数です。この変数の値を変更すると、近づく速さを調整できます。
 
0.0 に近いほどゆっくり移動し、1.0 に近いほどすばやく移動します。
 
このアルゴリズムについては、減速(摩擦)しながら移動させたいにまとめています。
 
例) 「ムービークリップの座標」を「マウスカーソルの座標」に近づける

// 初回に一度だけ実行されるイベント
onClipEvent (load) {

	// 摩擦係数 (0.0 ~ 1.0)
	friction = 0.15;

}

// 毎フレーム実行されるイベント
onClipEvent (enterFrame) {

	// ムービークリップの座標をマウスカーソルの座標に近づける
	_x += (_root._xmouse - _x) * friction;
	_y += (_root._ymouse - _y) * friction;

}
 
例) 「ムービークリップ mc の座標」を「マウスカーソルの座標」に近づける(Flash 6 以降)

// 摩擦係数 (0.0 ~ 1.0)
var friction = 0.15;

// 毎フレーム実行されるイベント
mc.onEnterFrame = function (){

	// ムービークリップの座標をマウスカーソルの座標に近づける
	this._x += (_root._xmouse - this._x) * friction;
	this._y += (_root._ymouse - this._y) * friction;

};
 
3. OS のマウスカーソルを非表示に設定
 
次に、OS のマウスカーソルを非表示にします。
 
Mouse.hide() を呼び出すと、Flashプレイヤー上のマウスカーソルが非表示になります。 一度でも実行すれば効果は持続します。
 
例) マウスカーソルを非表示

// OS のマウスカーソルを非表示に設定
Mouse.hide();
 
元に戻すには、Mouse.show() を呼び出します。
 
例) マウスカーソルを可視表示

// OS のマウスカーソルを可視表示に設定
Mouse.show();
 
4.マウスカーソルをスムーズに移動させる
 
マウスカーソルがスムーズに動くようにしたい場合は、Flash のフレームレートを高めに設定する必要があります。
 


 

自作のマウスカーソルを動かした方向に向ける

 

 


■動かしたマウスの方向を向くマウスカーソルを作成する

 
移動したマウスの方向を向き続ける、マウスカーソルを作成してみます。
 
1.マウスカーソル用の素材を用意する
 
マウスカーソル用の素材を用意して、ムービークリップを作成します。
 
マウスカーソルは右向きにします。グラフィックの方向は、重要となります。
 
 
2.「マウスカーソル用のムービークリップ」にスクリプトを追加する
 
「マウスカーソル用のムービークリップ」に、以下のスクリプトを記述します。
 
「1フレーム前のマウスカーソルの座標」を残しておきます。
 
「1フレーム前のマウスカーソルの座標」と「現在の座標」の、2つの座標から角度を計算します。
 
得られた「角度」を、「マウスカーソル用ムービークリップ」の角度にセットします。
 
このアルゴリズムについては、2つの座標から角度を求めるにまとめています。
 
例)「ムービークリップの角度」に「マウスを動かした方向」をセットする

// 初回に一度だけ実行されるイベント
onClipEvent (load) {

	// 1フレーム前の座標
	x_old = _root._xmouse;
	y_old = _root._ymouse;
}

// マウスカーソルを移動するたびに実行されるイベント
onClipEvent (mouseMove) {

	// マウスカーソルの座標をムービークリップの座標にセット
	_x = _root._xmouse;
	_y = _root._ymouse;

	// 「1フレーム前の座標」と「現在の座標」との角度を計算
	var r = Math.atan2(_root._ymouse - y_old,_root._xmouse - x_old) * 180 / Math.PI;

	// 角度を反映
	_rotation = r;

	// マウス座標の値を変数に残す
	x_old = _root._xmouse;
	y_old = _root._ymouse;
}
 
例)「ムービークリップ mc の角度」に「マウスを動かした方向」をセットする(Flash 6 以降)

// 1フレーム前の座標
var x_old = _root._xmouse;
var y_old = _root._ymouse;

// マウスカーソルを移動するたびに実行されるイベント
mc.onMouseMove = function (){

	// マウスカーソルの座標をムービークリップの座標にセット
	this._x = _root._xmouse;
	this._y = _root._ymouse;

	// 「1フレーム前の座標」と「現在の座標」との角度を計算
	var r = Math.atan2(_root._ymouse - y_old,_root._xmouse - x_old) * 180 / Math.PI;

	// 角度を反映
	this._rotation = r;

	// マウス座標の値を変数に残す
	x_old = _root._xmouse;
	y_old = _root._ymouse;

};
 
マウスの座標は、1ドット単位で取得できます。
 
マウスをゆっくり動かした場合、角度の精度が低くなります
 
0度、45度、90度、135度、180度、225度、270度、315 度のどれかになりがちです。
 
このままではカクカクした動きになってしまうので、ゆっくりと角度を変更するように修正します。
 
このアルゴリズムについては、2つの角度の差を計算するにまとめています。
 
例)「マウスを動かした方向」に「ムービークリップの角度」をゆっくり近づける

// 初回に一度だけ実行されるイベント
onClipEvent (load) {

	// 1フレーム前の座標
	x_old = _root._xmouse;
	y_old = _root._ymouse;

	// 角度(ターゲット)
	target = 0;

	// 摩擦係数 (0.0 ~ 1.0)
	friction = 0.2;
}

// マウスカーソルを移動するたびに実行されるイベント
onClipEvent (mouseMove) {

	// マウスカーソルの座標をムービークリップの座標にセット
	_x = _root._xmouse;
	_y = _root._ymouse;

	// 「1フレーム前の座標」と「現在の座標」との角度を計算
	target = Math.atan2(_root._ymouse - y_old,_root._xmouse - x_old) * 180 / Math.PI;

	// 「ターゲット」と「現在の角度」との角度差
	var sub = target - _rotation;
	sub -= Math.floor(sub / 360) * 360;
	if(sub > 180)	sub -= 360;

	// ターゲットにゆっくり近づくように角度を加算
	var spd = sub * friction;
	_rotation += spd;

	// マウス座標の値を変数に残す
	x_old = _root._xmouse;
	y_old = _root._ymouse;
}
 
例)「マウスを動かした方向」に「ムービークリップの角度」をゆっくり近づける(Flash 6 以降)

// 1フレーム前の座標
var x_old = _root._xmouse;
var y_old = _root._ymouse;

// 角度(ターゲット)
var target = 0;

// 摩擦係数 (0.0 ~ 1.0)
var friction = 0.2;

// マウスカーソルを移動するたびに実行されるイベント
mc.onMouseMove = function (){

	// マウスカーソルの座標をムービークリップの座標にセット
	this._x = _root._xmouse;
	this._y = _root._ymouse;

	// 「1フレーム前の座標」と「現在の座標」との角度を計算
	target = Math.atan2(_root._ymouse - y_old,_root._xmouse - x_old) * 180 / Math.PI;

	// 「ターゲット」と「現在の角度」との角度差
	var sub = target - this._rotation;
	sub -= Math.floor(sub / 360) * 360;
	if(sub > 180)	sub -= 360;

	// ターゲットにゆっくり近づくように角度を加算
	var spd = sub * friction;
	this._rotation += spd;

	// マウス座標の値を変数に残す
	x_old = _root._xmouse;
	y_old = _root._ymouse;

};
 
3. OS のマウスカーソルを非表示に設定
 
次に、OS のマウスカーソルを非表示にします。
 
Mouse.hide() を呼び出すと、Flashプレイヤー上のマウスカーソルが非表示になります。 一度でも実行すれば効果は持続します。
 
例) マウスカーソルを非表示

// OS のマウスカーソルを非表示に設定
Mouse.hide();
 
元に戻すには、Mouse.show() を呼び出します。
 
例) マウスカーソルを可視表示

// OS のマウスカーソルを可視表示に設定
Mouse.show();
 
4.マウスカーソルをスムーズに移動させる
 
最後に、Flash のフレームレートが低いときでも、マウスカーソルがスムーズに動くようにします。
 
マウスカーソル移動のイベント中に、 updateAfterEvent() 関数を呼び出します。
 
updateAfterEvent() 関数を実行すると、Flash のフレームレートに関係なく、再描画する事ができます。
 
例) マウスカーソルを移動するたびに再描画する

// 初回に一度だけ実行されるイベント
onClipEvent (load) {

	/* 略 */

	// OS のマウスカーソルを非表示に設定
	Mouse.hide();
}

// マウスカーソルを移動するたびに実行されるイベント
onClipEvent (mouseMove) {

	/* 略 */

	// マウスが動くたびに再描画する
	updateAfterEvent();
}
 
例) マウスカーソルを移動するたびに再描画する (Flash 6 以降)

/* 略 */

// OS のマウスカーソルを非表示に設定
Mouse.hide();

// マウスカーソルを移動するたびに実行されるイベント
mc.onMouseMove = function (){

	/* 略 */

	// マウスが動くたびに再描画する
	updateAfterEvent();
};
 


 

インスタンスをドラッグする

 

 


■インスタンスをドラッグする

 
ムービークリップを、ドラッグしてみます。
 
Flash 5 でドラッグを実現する場合、少々手間が掛かります。
 
 


■Flash 5 でドラッグを実現する

 
Flash 5 でムービークリップをドラッグできるようにしてみます。
 
1. イラストを用意
 
まず、ドラッグしたい画像を用意して、ボタンを作成します。
 
 
このボタンを使用して、さらにムービークリップを作成します。
 
ムービークリップの中にボタンを格納
 
2. ドラッグ開始
 
startDrag() メソッドを使用するとインスタンスをドラッグする事ができます。
 
ドラッグしたいムービークリップから呼び出します。
 
インスタンスの座標が、マウスカーソルの座標に追従して同時に移動するようになります。
 
MovieClip.startDrag ( 中央吸着するか? , x 座標最小値 , y 座標最小値 , x 座標最大値 , y 座標最大値 ) :Void
第01引数 Booleanドラッグ時に中央に吸着するかしないか
第02引数(略可)Numberドラッグの範囲制限 x 座標の最小値
第03引数(略可)Numberドラッグの範囲制限 y 座標の最小値
第04引数(略可)Numberドラッグの範囲制限 x 座標の最大値
第05引数(略可)Numberドラッグの範囲制限 y 座標の最大値
戻り値 Voidなし
 
第02~05 引数を設定すると、ドラッグで移動可能な範囲を制限できます。
 
ムービークリップの中に入り、ボタンに対して、以下のスクリプトを記述します。
 
ボタンをクリックしたときに上の階層のムービークリップのドラッグを開始する

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
on (press) {

	// ドラッグを開始する
	this.startDrag (true);

}
 
ドラッグの移動範囲を制限する例です。
 
ドラッグの移動範囲を制限する

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
on (press) {

	// ドラッグを開始する(移動制限付き)
	this.startDrag (true,100,50,400,300);

}
 
3. ドラッグを解除する
 
マウスボタンを離しても、ドラッグが自動的に解除されることはありません。
 
ドラッグを解除するには、マウスボタンを離すタイミングで、stopDrag() 関数を呼び出す必要があります。
 
マウスが離されたときにドラッグを解除する

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
on (press) {
	// ドラッグを開始する
	this.startDrag (true);	
}

// 「インスタンスの上」で「マウスボタンを離したとき」に実行されるイベント
on (release) {
	// ドラッグを解除する
	stopDrag ();
}
 
高速でマウスカーソルを移動しながらマウスを離した時に、on (release) イベントを取りこぼす事があります。
 
仕様に問題が無ければ、onClipEvent(mouseUp) イベントを使用して、マウスボタンが離されたときに stopDrag() 関数を呼び出すようにします。
 
これでより確実にドラッグを解除することができます。
 
以下のスクリプトを、ムービークリップの方に記述します。
 
マウスボタンが離されたときにドラッグを解除する

//「マウスボタンを離したとき」に実行されるイベント
onClipEvent (mouseUp){

	// ドラッグを解除する
	stopDrag ();

}
 
4. ドラッグをスムーズに移動させる
 
最後に、Flash のフレームレートが低いときでも、マウスカーソルがスムーズに動くようにします。
 
マウスカーソル移動のイベント中に、 updateAfterEvent() 関数を呼び出します。
 
updateAfterEvent() 関数を実行すると、Flash のフレームレートに関係なく、再描画する事ができます。
 
マウスカーソルを移動するたびに再描画する

// マウスカーソルを移動するたびに実行されるイベント
onClipEvent (mouseMove) {

	// マウスが動くたびに再描画する
	updateAfterEvent();
}
 
 


■Flash 6 以降でドラッグを実現する

 
Flash 6 以降でムービークリップをドラッグできるようにしてみます。
 
1. イラストを用意
 
まず、ドラッグしたい画像を用意して、ムービークリップを作成します。
 
 
配置して、インスタンス名に "drag_00"と名前を付けます。
 
 
2. ドラッグ開始
 
startDrag() メソッドを使用するとインスタンスをドラッグする事ができます。
 
ドラッグしたいムービークリップから呼び出します。
 
インスタンスの座標が、マウスカーソルの座標に追従して同時に移動するようになります。
 
MovieClip.startDrag ( 中央吸着するか? , x 座標最小値 , y 座標最小値 , x 座標最大値 , y 座標最大値 ) :Void
第01引数 Booleanドラッグ時に中央に吸着するかしないか
第02引数(略可)Numberドラッグの範囲制限 x 座標の最小値
第03引数(略可)Numberドラッグの範囲制限 y 座標の最小値
第04引数(略可)Numberドラッグの範囲制限 x 座標の最大値
第05引数(略可)Numberドラッグの範囲制限 y 座標の最大値
戻り値 Voidなし
 
第02~05 引数を設定すると、ドラッグで移動可能な範囲を制限できます。
 
タイムラインに、以下のスクリプトを記述します。
 
「ムービークリップ drag_00 」をクリックしたときにドラッグを開始する

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
drag_00.onPress = function (){

	// ドラッグを開始する
	this.startDrag (true);

};
 
ドラッグの移動範囲を制限する例です。
 
ドラッグの移動範囲を制限する

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
drag_00.onPress = function (){

	// ドラッグを開始する(移動制限付き)
	this.startDrag (true,100,50,400,300);

};
 
3. ドラッグを解除する
 
マウスボタンを離しても、ドラッグが自動的に解除されることはありません。
 
ドラッグを解除するには、マウスボタンを離すタイミングで、stopDrag() 関数を呼び出す必要があります。
 
マウスが離されたときにドラッグを解除する

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
drag_00.onPress = function (){
	// ドラッグを開始する
	this.startDrag (true);
};

// 「インスタンスの上」で「マウスボタンを離したとき」に実行されるイベント
drag_00.onRelease = function (){
	// ドラッグを解除する
	stopDrag ();
};
 
高速でマウスカーソルを移動しながらマウスを離した時に、onRelease イベントを取りこぼす事があります。
 
仕様に問題が無ければ、onMouseUp イベントを使用して、マウスボタンが離されたときに stopDrag() 関数を呼び出すようにします。
 
これでより確実にドラッグを解除することができます。
 
onMouseUp イベントを使って、マウスボタンが離されたときにドラッグを解除する

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
drag_00.onPress = function (){
	// ドラッグを開始する
	this.startDrag (true);
};

// 「マウスボタンを離したとき」に実行されるイベント
_root.onMouseUp = function (){
	// ドラッグを解除する
	stopDrag ();
};
 
4. ドラッグをスムーズに移動させる
 
最後に、Flash のフレームレートが低いときでも、マウスカーソルがスムーズに動くようにします。
 
マウスカーソル移動のイベント中に、 updateAfterEvent() 関数を呼び出します。
 
updateAfterEvent() 関数を実行すると、Flash のフレームレートに関係なく、再描画する事ができます。
 
マウスカーソルを移動するたびに再描画する

// マウスカーソルを移動するたびに実行されるイベント
_root.onMouseMove = function (){

	// マウスが動くたびに再描画する
	updateAfterEvent();
};
 


 

インスタンスをドロップする

 

 


■インスタンスをドロップする

 
インスタンスをドラッグするからの続きです。
 
今回もFlash 5 と Flash 6 以降とで解説が分かれます。
 
 


■Flash 5 でドロップを実現する

 
Flash 5 でムービークリップをドロップできるようにしてみます。
 
1.ドロップの当たり判定用のイラストを用意する
 
まず、ドロップの判定用のシェイプを用意します。このシェイプの形状がそのまま当たり判定となります。
 
このシェイプを使用してムービークリップを作成します。
 
 
画像をドロップ用の素材として使用すると、当たり判定が矩形になるので注意します。
 
次に、ムービークリップに、インスタンス名を付けます。ここでは、"drop_00" と名前を付けます。
 
Flash5 の場合
 
2.ドロップされたか調べる
 
ドラッグ中のマウスカーソルの真下にあるインスタンスを取得するには、ムービークリップの _droptarget プロパティを使用します。
 
このプロパティにインスタンスのターゲットパスが、
 
/インスタンス名 / インスタンス名 / …」という文字列で格納されています。
 
デバッガで確認する
 
これを、スラッシュシンタックスといいます。
 
ドットシンタックス 「_root.インスタンス名.インスタンス名.…」では無いので注意して下さい。
 
「スラッシュシンタックス」から、「インスタンスの参照」に変換するには、eval() 関数を使用します。
 
ドラッグしたいムービークリップに、以下のアクションスクリプトを記述します。
 
ドラッグしてマウスボタンを離すときに、「ドロップ用ムービークリップ」との当たり判定を調べます。
 
当たり判定がある場合、「ドロップ用のムービークリップ」の座標に吸着させます。
 
ドロップ時にマウスカーソルの真下に "drop_00" があればその座標に吸着させる

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
on (press) {

	// ドラッグ開始(中央に吸着する)
	this.startDrag (true);
}

//「マウスボタンを離したとき」に実行されるイベント
onClipEvent (mouseUp){

	//ドラッグ中のインスタンスの真下に _root.drop_00 があるか
	if (eval(this._droptarget) == _root.drop_00) {

		//_root.drop_00 の座標に吸着
		this._x = _root.drop_00._x;
		this._y = _root.drop_00._y;
	}

	// ドラッグ終了
	stopDrag();
}
 
 


■Flash 6 以降でドラッグを実現する

 
Flash 6 以降でムービークリップをドロップできるようにしてみます。
 
1.ドロップの当たり判定用のイラストを用意する
 
まず、ドロップの判定用のシェイプを用意します。このシェイプの形状がそのまま当たり判定となります。
 
このシェイプを使用してムービークリップを作成します。
 
 
画像をドロップ用の素材として使用すると、当たり判定が矩形になるので注意します。
 
次に、ムービークリップに、インスタンス名を付けます。ここでは、"drop_00" と名前を付けます。
 
FlashMX2004 の場合
 
2.ドロップされたか調べる
 
ドラッグ中のマウスカーソルの真下にあるインスタンスを取得するには、ムービークリップの _droptarget プロパティを使用します。
 
このプロパティにインスタンスのターゲットパスが、
 
/インスタンス名 / インスタンス名 / …」という文字列で格納されています。
 
デバッガで確認する
 
これを、スラッシュシンタックスといいます。
 
ドットシンタックス 「_root.インスタンス名.インスタンス名.…」では無いので注意して下さい。
 
「スラッシュシンタックス」から、「インスタンスの参照」に変換するには、eval() 関数を使用します。
 
ドラッグしたいムービークリップに、以下のアクションスクリプトを記述します。
 
ドラッグしてマウスボタンを離すときに、「ドロップ用ムービークリップ」との当たり判定を調べます。
 
当たり判定がある場合、「ドロップ用のムービークリップ」の座標に吸着させます。
 
"drag_00" をドロップ時に、マウスカーソルの真下に "drop_00" があれば、その座標に吸着させる

// 「インスタンスの上」で「マウスボタンを押したとき」に実行されるイベント
drag_00.onPress = function (){

	// ドラッグを開始する
	this.startDrag (true);
};

// 「マウスボタンを離したとき」に実行されるイベント
drag_00.onMouseUp = function (){

	//ドラッグ中の「 drag_00 インスタンス」の真下に 「drop_00 インスタンス」があるか
	if (eval(this._droptarget) == drop_00) {

		//_root.drop_00 の座標に吸着
		this._x = drop_00._x;
		this._y = drop_00._y;
	}
};

// 「マウスボタンを離したとき」に実行されるイベント
_root.onMouseUp = function (){

	// ドラッグを解除する
	stopDrag ();
};
 


 

マウスホイールの回転を取得する(Flash 7 以降)

 

サンプルをダウンロード
 


マウスホイールの回転を取得する

 
マウスホイールの回転を取得するには、マウスイベントリスナーを使用します。
 
イベントリスナーについて
 
イベントハンドラを使用すると、一人のハンドラーがイベント通知を得ることができます。
 
イベントリスナーを使用すると、複数のリスナーがイベント通知を得ることができます。
 
マウスイベントリスナーを使用すると、マウス入力関係のイベント通知を知ることができます。
 
オブジェクトを作成する
 
オブジェクトを作成します。
 
このオブジェクトは、リスナーに相当します。
 
オブジェクト作成

// オブジェクトを作成
var listener = new Object();
 
オブジェクトに関数を登録する
 
オブジェクトに、以下のプロパティを追加します。
 
各プロパティには、コールバック関数を登録します。
 
プロパティ名 解説
onMouseDown マウスボタンを押した時に実行される
onMouseUp マウスボタンを離した時に実行される
onMouseMove マウスカーソルを移動するたびに実行される
onMouseWheel マウスホイールを回転すると実行される
 
オブジェクトに関数を登録

// オブジェクトを作成
var listener = new Object();

// マウスボタンを押した時に実行されるイベント
listener.onMouseDown = function (){
	trace("マウスボタンを押した");
};

// マウスボタンを離した時に実行されるイベント
listener.onMouseUp = function (){
	trace("マウスボタンを離した");
};

// マウスカーソルを移動するたびに実行されるイベント
listener.onMouseMove = function (){
	trace("マウスカーソルを移動した");
};

// マウスホイールを回転すると実行されるイベント
listener.onMouseWheel = function (){
	trace("マウスホイールを回転した");
};
 
onMouseWheel イベントについて
 
onMouseWheel プロパティに登録した、関数の引数から2つのパラメータを取得できます。
 
第01引数からは、ホイールの回転速度が取得できます。
 
上方向に回すと正の値、下方向に回すと負の値が得られます。
 
ホイールの回転が速いと、値が大きくなります。
 
第02引数からは、マウスカーソルの真下にある「インスタンスの参照」が取得できます。
 
onMouseWheel イベントにコールバック関数を登録する

var listener = new Object();

// マウスホイールを回転するたびに実行されるイベント
listener.onMouseWheel = function (delta , scrollTarget){

	trace("ホイールの回転:" + delta);
	trace("真下のインスタンスの参照:" + scrollTarget);

};
 
リスナーを登録する(リッスンを開始する)
 
システムにリスナーを登録するには、Mouse.addListener() メソッドを使用します。
 
引数に、「コールバック関数をセットしたオブジェクト」を渡します。
 
これで、マウスの入力があるたびに、コールバック関数が実行されるようになります。
 
リッスンを開始する

// ------------------------------------------------------------
// リスナー用オブジェクトを作成
// ------------------------------------------------------------
// オブジェクトを作成
var listener = new Object();


// ------------------------------------------------------------
// リスナーにコールバック関数を登録
// ------------------------------------------------------------
// マウスボタンを押した時に実行されるイベント
listener.onMouseDown = function (){
	trace("マウスボタンを押した");
};

// マウスボタンを離した時に実行されるイベント
listener.onMouseUp = function (){
	trace("マウスボタンを離した");
};

// マウスカーソルを移動するたびに実行されるイベント
listener.onMouseMove = function (){
	trace("マウスカーソルを移動した");
};

// マウスホイールを回転すると実行されるイベント
listener.onMouseWheel = function (delta , scrollTarget){
	trace("マウスホイールを回転した");
	trace("ホイールの回転:" + delta);
	trace("真下のインスタンスの参照:" + scrollTarget);
};


// ------------------------------------------------------------
// システムにリスナーを登録
// ------------------------------------------------------------
// リスナーを登録(リッスンを開始する)
Mouse.addListener( listener );
 
リスナーを除外する(リッスンを終了する)
 
イベント通知を止めたいときは、Mouse.removeListener() メソッドを使用します。
 
引数に、「Mouse.addListener() メソッドの引数で指定したオブジェクト」と同じものを渡します。
 
リッスンを終了する

// ------------------------------------------------------------
// リスナー用オブジェクトを作成
// ------------------------------------------------------------
// オブジェクトを作成
var listener = new Object();


// ------------------------------------------------------------
// リスナーにコールバック関数を登録
// ------------------------------------------------------------
// マウスボタンを押した時に実行されるイベント
listener.onMouseDown = function (){
	trace("マウスボタンを押した");
};

// マウスボタンを離した時に実行されるイベント
listener.onMouseUp = function (){
	trace("マウスボタンを離した");
};

// マウスカーソルを移動するたびに実行されるイベント
listener.onMouseMove = function (){
	trace("マウスカーソルを移動した");
};

// マウスホイールを回転すると実行されるイベント
listener.onMouseWheel = function (delta , scrollTarget){
	trace("マウスホイールを回転した");
	trace("ホイールの回転:" + delta);
	trace("真下のインスタンスの参照:" + scrollTarget);
};


// ------------------------------------------------------------
// システムにリスナーを登録
// ------------------------------------------------------------
// リスナーを登録(リッスンを開始する)
Mouse.addListener( listener );

// リスナーを除外(リッスンを終了する)
Mouse.removeListener( listener );