ドラッグ アンド ドロップ ゲームを使用していますが、完璧ではありません。すべてのムービークリップは、ターゲットに正確に並んでいるとき、ターゲットにドラッグ アンド ドロップします。
ただし、MC をターゲット ゾーンの外にドラッグしているときにマウスを離すと、常にではありませんが、1010 用語未定義エラーがスローされ、MC が元の開始 x/y 座標にスナップされません (マウスを上げていたときの場所に mc を残すだけです)。デバッガーを実行すると、ドロップ関数で次の行が処理されます。
if (event.currentTarget.dropTarget != null && MovieClip(event.currentTarget.dropTarget.parent).allowed.indexOf(event.currentTarget) >= 0){
参考までに、一部のムービークリップの特定のターゲットではなく、ターゲットの「ゾーン」が必要だったため、ターゲット配列のセットが許可されています。
何か案は?
以下の更新されたコード:
if (event.currentTarget.dropTarget != null) {
var mc:MovieClip=event.currentTarget.dropTarget as MovieClip;
if (mc==null) { // typecast fails. Say there's a Sprite below
reply_txt.textColor = 0xEE1212
reply_txt.text = "Oops! Try Again!";
event.currentTarget.alpha = 1;
event.currentTarget.x = startX;
event.currentTarget.y = startY;
return; // nothing to do here
}
mc=mc.parent;
if (mc && mc.allowed) {
// this MC has "allowed" property not "undefined" - we're in the grid
// so now we can check indexOf() safely
if (mc.allowed.indexOf(event.currentTarget)>=0){
reply_txt.textColor = 0x33BC10
reply_txt.text = "Good Job!";
event.currentTarget.alpha = 1;
event.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp);
event.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, dropIt);
event.currentTarget.buttonMode = false;
event.currentTarget.x = MovieClip(event.currentTarget.dropTarget.parent).x;
event.currentTarget.y = MovieClip(event.currentTarget.dropTarget.parent).y;
stored.push(event.currentTarget);
startXarray.push(startX);
startYarray.push(startY);
counter++;
}
}
}