我想製作一個可拖動的movieclip目標另一個movieclip(放置目標)。簡單的拖放到目標as3
它不需要有一個可重用的函數(即event.target不是必需的),它不需要是數組的一部分。
我看不到爲什麼下面的代碼不起作用。我試過在地方使用賦值符號(=)而不是等號(==),但這沒有什麼區別。
任何反饋非常讚賞。
//Creating variables to store original x/y position of draggable movieclip (my_mc2):
var startX:Number;
var startY:Number;
//Enabling hand cursor over draggable mc:
my_mc2.buttonMode = true;
//Adding event listeners for mouse up and mouse down.
my_mc2.addEventListener(MouseEvent.MOUSE_DOWN, drag);
my_mc2.addEventListener(MouseEvent.MOUSE_UP, drop);
//Drag function (mouse down):
function drag(event:MouseEvent):void {
startX = my_mc2.x;
startY = my_mc2.y;
my_mc2.startDrag();
}
//Drop function (mouse up):
function drop(event:MouseEvent):void {
my_mc2.stopDrag();
if (my_mc2.x == target_mc2.x && my_mc2.y == target_mc2.y) {
my_mc2.removeEventListener(MouseEvent.MOUSE_DOWN, drag);
} else {
my_mc2.x == startX;
my_mc2.y == startY;
}
}
對不起,看起來代碼出現在調試窗口中,作爲錯誤原因1009正在出現,作爲成功的drop函數的一部分,我的時間線跳轉(gotoAndPlay)。從那時起,任何時候我點擊SWF中的舞臺(或其上的任何東西),輸出告訴我我有錯誤1009,並指向調試控制檯指向特定的行,在你的代碼示例中上面是'if'行。說實話,我在另一個文件中看到了這個,所以我決定重新開始。任何意見讚賞。 – hangoJango 2014-09-08 13:19:44
順便說一句,我已經追蹤了該功能的'如果'部分的所有內容。沒有什麼是空的。 – hangoJango 2014-09-08 13:32:25
耶!找到了答案(但我不知道它背後的理論)。我需要在時間軸中擴展拖放對象(上例中爲my_mc2和target_mc2),以便稍後單擊此階段時它們仍然存在。爲了解決這個問題,我只是將他們的可見屬性設置爲false。這是一條學習曲線! – hangoJango 2014-09-08 13:42:32