当我将它们放在另一个位置时,我的电影剪辑切换位置出现问题。应该发生的是电影剪辑应该返回到原来的位置,除非我放在我分配的特定位置。当我将它放在空白处或指定的放置点时,它工作正常,只有当我将它放在另一个影片剪辑上时,这两个影片剪辑才会切换位置,并且它们会变得混乱。如何停止MCs转换位置
我试着禁用所有与“mouseEnabled = false”,并将其设置回“mouseEnabled = true”当我悬停在任何电影剪辑,但它没有回应。任何人都有线索?
function Placed(e){
if(e.target.hitTestObject(Destination)) {
e.target.stopDrag();
e.target.enabled = false;
e.target.mouseEnabled = false;
}
else {
e.target.x = xPos;
e.target.y = yPos;
e.target.stopDrag();
}
}
这是代码,可以让MCs回到原来的位置或坚持到指定地点。我认为它清楚地知道MC应该怎么做,因此我不知道为什么他们决定在将它们放在彼此顶部时切换位置。
编辑*:我会将我的整个代码发布在这句话下面,它可能有助于更好地理解可能会出现什么问题。这段代码已经有Vesper和null.point3r的想法,但仍然没有解决问题。
当我将MC放入目标中时,它将自行克隆并禁用拖动的MC。当我没有把它放到目的地时,就没有克隆。我有3个MC以MC1,MC2,MC3的顺序创建。当我把旧的MC放在新的MC上时,他们会切换位置,比如我把MC1放在MC2或MC3的上面,但是当我做相反的事情时,比如说MC3或MC1上面的MC3,什么都不会发生,前者应该是这样以及。
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;
var xPos:int;
var yPos:int;
var temp = 0;
var Drag:DisplayObject;
//Count for Amount MCs
for (var i=1; i<4; i++)
{
this["Amount" + i].addEventListener(MouseEvent.MOUSE_DOWN, CheckDrag);
this["Amount" + i].addEventListener(MouseEvent.MOUSE_UP, Placed);
this["Amount" + i].buttonMode = true;
}
//Gets original position of selected Amount and allows dragging
function Trace(e){
getPosition(e.target);
e.target.startDrag();
}
//Stores original position of selected/dragged Amount
function getPosition(target:Object):void{
xPos = target.x;
yPos = target.y;
}
//Check if a MC is being dragged
function CheckDrag(e){
if(Drag != null) return;
Drag = e.target;
Trace(e);
}
//Checks if placed in Ledger, returns to original position if false
function Placed(e){
if(Drag == null) return;
//Add Child on Mouse_UP
var Xtra:Class = getDefinitionByName(getQualifiedClassName(e.currentTarget)) as Class;
var Extra:MovieClip = new Xtra();
this.addChildAt(Extra,1);
Extra.x = xPos;
Extra.y = yPos;
//Disable Drag of selected Amount and set position in Desitnation
if(e.target.hitTestObject(Destination)){
e.currentTarget.stopDrag();
e.currentTarget.enabled = false;
e.currentTarget.mouseEnabled = false;
}
//Return Amount to original position and remove Child
else{
e.currentTarget.x = xPos;
e.currentTarget.y = yPos;
e.currentTarget.stopDrag();
removeChild(Extra);
}
Drag = null;
}
用'e.currentTarget'取代'e.target'' –
它们仍然改变地方... – IceCue