Hello,
I am trying to do a fairly simple drag/drop. I have it mostly working but when I drop the draggable object, the mouse must be directly over the target object in order for it to ‘see’ the target object. In other words, if a portion of the draggable object is over the target object when I drop it it will not see the target object UNLESS the mouse was also over the target object.
Should I use hit test code? If so does anyone have an example they can show me? I know this code needs to be cleaned up a bit but right now I just need to know how to get the entire draggable object to sense what is under it when dropped. Thanks.
Here is the code I am using.
for (var i:uint = 0; i < numbAns; i++)
{
var ans:TextField = new TextField();
ans.text = loaded.draggers.dragger*;
ans.setTextFormat(formatNormal);
ans.autoSize = "left";
ans.x = 5;
ans.selectable = false;
ansDict[ans] = loaded.draggers.dragger*. @ ansid;
prevBoxLoc = spMainQues.y + 40;
var boxFrame:MovieClip = new MovieClip();
boxFrame.graphics.beginFill(0xFFFFFF);
boxFrame.graphics.drawRoundRect(0,0, ans.width +10, ans.height, 5,5);
boxFrame.graphics.endFill();
boxFrame.filters = [new GlowFilter(0x999999,1,10,10,6,2,false,false)];
boxFrame.x = (boxFrame.width/2 - boxFrame.width) + 90;
boxFrame.y = (i * 40) + prevBoxLoc;
boxFrame.addChild(ans);
boxFrame.mouseChildren = false;
boxFrame.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
stage.addChild(boxFrame);
}
for (var j:uint = 0; j < numbQues; j++)
{
var quest:TextField = new TextField();
quest.text = loaded.targets.targt[j];
quest.setTextFormat(formatBig);
quest.width = spMainQues.width - 50;
quest.autoSize = "left";
quest.wordWrap = true;
quest.x = 5;
quest.selectable = false;
quesDict[quest] = loaded.targets.targt[j]. @ quesid;
var boxFrameQ:MovieClip = new MovieClip();
boxFrameQ.graphics.beginFill(0xFFFFFF, 0);
boxFrameQ.graphics.drawRoundRect(0,0, quest.width +10, quest.height, 10,10);
boxFrameQ.graphics.endFill();
boxFrameQ.x = 15;
boxFrameQ.y = prevQuesY + prevQuesHght + 15;
prevQuesHght = boxFrameQ.height;
prevQuesY = boxFrameQ.y;
boxFrameQ.addChild(quest);
boxFrameQ.mouseChildren = false;
this.spMainQues.addChild(boxFrameQ);
}
function startDragging(evt:MouseEvent):void
{
evt.target.removeEventListener(MouseEvent.MOUSE_DOWN, startDragging);
origLocatX = evt.target.x;
origLocatY = evt.target.y;
evt.target.startDrag(false);
evt.target.parent.addChild(evt.target);
evt.target.addEventListener(MouseEvent.MOUSE_UP, onDrop);
}
var corrQuestIndex:uint = 0;
var wrngQuestIndex:uint = 0;
function onDrop(evt:MouseEvent):void
{
evt.target.removeEventListener(MouseEvent.MOUSE_UP, onDrop);
evt.target.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
evt.target.stopDrag();
evt.target.x = origLocatX;
evt.target.y = origLocatY;
if (quesDict[evt.target.dropTarget] == ansDict[evt.target.getChildAt(0)] && evt.target.dropTarget != null)
{
quesLocCorr[corrQuestIndex] = evt.target.dropTarget.parent.y + spMainQues.y;
trace(evt.target.dropTarget);
trace("That is the correct answer!!!!");
corrQuestIndex++;
}
else if(evt.target.dropTarget.toString() == "[object TextField]" && evt.target.dropTarget != null)
{
quesLocWrng[wrngQuestIndex] = evt.target.dropTarget.parent.y + spMainQues.y;
wrngQuestIndex++;
}
}