Hello,
I posted this on the newbie's list and didn't get a response, so I
figured I would try here. Sorry for the double post for those of you who
watch both lists.
I have a drag and drop and have an issue. When I roll over one of the
other pieces and click the piece stays instead of jumping back to its
original location. It is not snapping to the target -- I removed the
target from the stage when the first piece snapped into place. It just
gets caught behind the other drag piece and when I click the program
gets completely confused.
Is there a way to swap depths when a piece is dragged over another piece
so that the drag piece is always on top? I know how to do this from a
button, but I don't know how to activate this event when a piece touches
another piece.
Below is my code, in case you would like a peak. Any suggestions you
have are welcome. I am very much a newbie.
Thanks,
Susan
__________________________________________________________
import mx.utils.Delegate;
//myButton.onRelease = Delegate.create(this, traceMe);
match = 0;
function dragMe() {
this.startDrag();
trace(this);
}
function activateDrag() {
piece_mc1.onPress = Delegate.create(piece_mc1, dragMe);
piece_mc2.onPress = Delegate.create(piece_mc2, dragMe);
piece_mc3.onPress = Delegate.create(piece_mc3, dragMe);
piece_mc4.onPress = Delegate.create(piece_mc4, dragMe);
}
function checkIfMatching(dragPiece, dragTarget, originalLocation) {
trace("dragPiece = "+dragPiece+" dragTarget = "+dragTarget+"
originalLocation = "+originalLocation);
dragPiece.stopDrag();
drop = 0;
trace(dragPiece.hitTest(target_mc1));
trace("target_mc1._x = "+target_mc1._x);
if (dragPiece.hitTest(dragTarget)) {
trace("*************MATCH*************");
match++;
trace(match);
dragPiece._x = dragTarget._x;
dragPiece._y = dragTarget._y;
trace("stop x= "+dragTarget._x+" y = "+dragTarget._y);
trace(dragTarget+" x= "+dragTarget._x+" y =
"+dragTarget._y);
dragPiece.stopDrag();
dragTarget._x = 1000;
dragTarget._y = 1000;
} else if (dragPiece.hitTest(target_mc1)) {
trace("else 1");
dragPiece._x = target_mc1._x;
dragPiece._y = target_mc1._y;
drop = 1;
target_mc1._x = 1000;
target_mc1._y = 1000;
} else if (dragPiece.hitTest(target_mc2)) {
trace("else 2");
dragPiece._x = target_mc2._x;
dragPiece._y = target_mc2._y;
drop = 1;
} else if (dragPiece.hitTest(target_mc3)) {
trace("else 3");
dragPiece._x = target_mc3._x;
dragPiece._y = target_mc3._y;
drop = 1;
} else if (dragPiece.hitTest(target_mc4)) {
trace("else 4");
dragPiece._x = target_mc4._x;
dragPiece._y = target_mc4._y;
drop = 1;
} else {
//trace(originalLocation._x+ " " +originalLocation._y);
//trace(dragPiece._x+ " " +dragPiece._y);
trace("***********Jump Back***********");
dragPiece._x = originalLocation._x;
dragPiece._y = originalLocation._y;
}
if (drop == 1) {
trace("***********Deactivate Drag***********");
dragPiece.onPress = null;
}
}
piece_mc1.onRelease = function() {
checkIfMatching(this, target_mc1, original_mc1);
};
piece_mc2.onRelease = function() {
checkIfMatching(this, target_mc2, original_mc2);
};
piece_mc3.onRelease = function() {
checkIfMatching(this, target_mc3, original_mc3);
};
piece_mc4.onRelease = function() {
checkIfMatching(this, target_mc4, original_mc4);
};
function reset() {
match = 0;
activateDrag();
for (i=1; i<=4; i++) {
piece = eval("piece_mc"+i);
target = eval("target_mc"+i);
targetLoc = eval("targetLoc_mc"+i);
original = eval("original_mc"+i);
trace("piece._x "+piece+" "+piece._x);
piece._x = original._x;
piece._y = original._y;
target._x = targetLoc._x;
target._y = targetLoc._y;
}
}
activateDrag();
reset_btn.onPress = Delegate.create(this, reset);
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com