1
任何人都可以告訴我如何使用AS3實現選取框選擇效果,通過在它們周圍繪製動態矩形來選擇多個動畫片段,然後將它們拖放到任何位置?as3選取框選擇拖動多個子對象
任何人都可以告訴我如何使用AS3實現選取框選擇效果,通過在它們周圍繪製動態矩形來選擇多個動畫片段,然後將它們拖放到任何位置?as3選取框選擇拖動多個子對象
如果需要多個對象可拖動,請勿使用startDrag()
,因爲它只允許一次拖動一個對象。相反,監聽鼠標事件,並做手動運動:
var oldX:int;
var oldY:int;
var dragging:Boolean = false;
function onMouseDown(evt:MouseEvent):void {
dragging = true;
oldX = evt.stageX;
oldY = evt.stageY;
}
function onMouseMove(evt:MouseEvent):void {
if (!dragging) return;
var dX:int = evt.stageX - oldX;
var dY:int = evt.stageY - oldY;
for (int i = 0; i < selectedClips.length; i++) {
var clip:DisplayObject = selectedClips[i];
clip.x += dX;
clip.y += dY;
}
oldX = evt.stageX;
oldY = evt.stageY;
}
function onMouseUp(evt:MouseEvent):void {
dragging = false;
}
此代碼假定:
selectedClips
。DisplayObject
繼承。MOUSE_DOWN
,MOUSE_MOVE
和MOUSE_UP
鼠標事件的所有可拖動對象上添加了事件偵聽器。如果這三個條件中的任何一個都不符合,請更新我的代碼或您的代碼以正常工作。另外,如果在刪除對象時需要執行任何其他處理,則可以使用鼠標上移處理程序來添加自定義代碼。
如何詳細回答您的問題?從高級視圖中,跟蹤鼠標的最初點,然後mouseDown和下一個mouseUp之間的每個幀都繪製/重繪一個矩形,以匹配當前鼠標位置和初始鼠標位置。在鼠標上檢測矩形中包含的所有適用的影片剪輯 - 暫時將該列表存儲在某處。添加一些邏輯來處理當你的列表中的一個mc被鼠標擊落時。然後startDrag()它們全部。 – BadFeelingAboutThis 2012-07-19 23:58:13
@LondonDrugs_MediaServices謝謝4回覆,hav已經完成了矩形部分,將hitTestObjects存儲在一個數組中,但是在數組中的任何mcs上mousedown只是拖動該特定mc,而不是其他部分 – 2012-07-20 00:46:12
暫時傳輸所有剪輯你想移動到另一個MovieClip並拖動它。或者,不要真的做一個startDrag()類型的拖動。相反,請根據鼠標的增量調整x和y。 – 2012-07-20 01:39:55