在拖放中使用flash时,在flash中鼠标向上和向下的问题
您能帮我找出是什么原因导致我的程序出现意外输出吗?我使用了flash cs5和as3。这是一个拖放游戏 没有发现错误,但我的鼠标向上和鼠标向下没有按预期方式运行。(在我看来) 我这样说是因为,当我测试代码时,当我单击对象时。鼠标下键有点像点击之类的功能。我不能扔下这个物体 这是我用于拖放的代码集在拖放中使用flash时,在flash中鼠标向上和向下的问题,flash,actionscript-3,mouseevent,flash-cs5,Flash,Actionscript 3,Mouseevent,Flash Cs5,您能帮我找出是什么原因导致我的程序出现意外输出吗?我使用了flash cs5和as3。这是一个拖放游戏 没有发现错误,但我的鼠标向上和鼠标向下没有按预期方式运行。(在我看来) 我这样说是因为,当我测试代码时,当我单击对象时。鼠标下键有点像点击之类的功能。我不能扔下这个物体 这是我用于拖放的代码集 wintersquash_mc.buttonMode = true; wintersquash_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupOb
wintersquash_mc.buttonMode = true;
wintersquash_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
wintersquash_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
function pickupObject(event:MouseEvent):void
{
event.target.startDrag(true);
event.target.parent.addChild(event.target);
objectoriginalX = event.target.x;
objectoriginalY = event.target.y;
}
function dropObject(event:MouseEvent):void
{
event.target.stopDrag();
var matchingTargetName:String = "target" + event.target.name;
var matchingTarget:DisplayObject = getChildByName(matchingTargetName);
if (event.target.dropTarget != null && event.target.dropTarget.parent == matchingTarget)
{
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
event.target.buttonMode = false;
event.target.x = matchingTarget.x;
event.target.y = matchingTarget.y;
scorer++;
score.text = String(scorer);
}
else
{
event.target.x = objectoriginalX;
event.target.y = objectoriginalY;
}
}
希望有人能告诉我为什么它不能正常工作:(尝试将您的
鼠标添加到舞台上,而不是您的movieclip。这将确保无论鼠标在哪里,都能捕捉到事件
此外,您可以考虑只添加您的<代码> MouSyUpUp> /Cudio>侦听器,一旦PcPuPoBjjd()运行。
wintersquash_mc.buttonMode = true;
wintersquash_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
function pickupObject(event:MouseEvent):void
{
event.target.startDrag(true);
event.target.parent.addChild(event.target);
objectoriginalX = event.target.x;
objectoriginalY = event.target.y;
stage.addEventListener(MouseEvent.MOUSE_UP, dropObject);
}
这将要求您的类具有对Stage对象的引用。此外,您还必须在处理完侦听器后将其从Stage中显式删除。不过,请尝试一下,看看它是否适合您。我通常会这样处理拖动:
wintersquash_mc.buttonMode = true;
wintersquash_mc.mouseChildren = false;
//this way you won't start dragging i.e. a sub-movieclip of the button
wintersquash_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
function pickupObject(event:MouseEvent):void
{
event.target.startDrag(true);
event.target.parent.addChild(event.target);
// is it necessary to add the clip to its parent?
// I would rather make a var on the root,
// and dump the event.target into that like this:
// root.nowDragged = event.target;
objectoriginalX = event.target.x;
objectoriginalY = event.target.y;
stage.addEventListener(MouseEvent.MOUSE_UP, dropObject);
}
function dropObject(event:MouseEvent):void
{
root.nowDragged.stopDrag(true);
stage.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
// this removes the listener to prevent false alarms on other mouse ups
//... (rest of your code)
}
我希望这能有所帮助。应该是鼠标向下吗?因为当你放下鼠标时,你会按下它。我试着按照你说的做,但目标框就像是从对象上跑开。我的意思是,如果我将wintersquash\u mc对象拖动到TargetSquash\u mc中,目标位置本身就到对象曾经所在的位置。同时,鼠标e_____________________________________________________(