0
我有2個對象和1個目標。當鼠標鍵關閉時,我將拖動一個對象,並在鼠標鍵合時將對象放在目標對象上。當o2處於目標狀態時,將o1拖到目標上,o2轉到它的位置,而o1不會轉向目標。在Actionscript 3中拖放
有人可以幫助我嗎?
var t1:int=0; //target is empty
o1.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
o1.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
function startDragging(evt:MouseEvent):void
{
o1.startDrag();
if (o1.x == tar1.x && o1.y == tar1.y)
{
t1 = 0;
}
}
function stopDragging(evt:MouseEvent):void
{
if (tar1.hitTestObject(o1) && t1 == 0)
{
o1.x = tar1.x;
o1.y = tar1.y;
o1.stopDrag();
t1 = 1; //target is full
}
else
{
o1.x = 250;
o1.y = 200;
o1.stopDrag();
}
}
o2.addEventListener(MouseEvent.MOUSE_DOWN, startDragging2);
o2.addEventListener(MouseEvent.MOUSE_UP, stopDragging2);
function startDragging2(evt:MouseEvent):void
{
o2.startDrag();
if (o2.x == tar1.x && o2.y == tar1.y)
{
t1 = 0;
}
}
function stopDragging2(evt:MouseEvent):void
{
if (tar1.hitTestObject(o2) && t1 == 0)
{
o2.x = tar1.x;
o2.y = tar1.y;
o2.stopDrag();
t1 = 1;}
else
{
o2.x = 250;
o2.y = 140;
o2.stopDrag();
}
}
謝謝。我正在考慮你的指示。 – Amir
Vesper!你能幫我解決這個問題嗎?當你的解決方案處於目標狀態時,你的解決方案將從o1或o2中移除監聽器,但是我希望用戶能夠再次將它拖回到它的位置,即使該對象位於目標中。在我的真實項目中,我有9個物體和7個目標。有沒有辦法,當拖動一個對象其他對象監聽器禁用時間? – Amir
如果您希望能夠將對象拖離目標,只需在代碼的開頭添加一個偵聽器,而不是最後。關於您的其他問題,您應該跟蹤是否已經有一個對象被拖動,並且如果有的話就不要繼續處理。 – Vesper