2017-09-07 39 views
2

我在尋找的是當我在舞臺上拖動一個對象時,我希望拖動一個底層對象(同一圖層),並保留主要對象的位置。我需要在多個對象情況下使用數組嗎? 這隻針對一個對象(和「子對象」),總共有22個,其中我不能將子對象添加到它的動畫片段中,否則舞臺上的其他21個對象將重疊並相互干擾。Flash AS3拖動多個對象

這是我迄今爲止,也見插圖。任何人都可以指示我使用一些可用的代碼嗎?

CF.addEventListener(MouseEvent.MOUSE_DOWN, dragCF); 
CF.addEventListener(MouseEvent.MOUSE_OVER, fadeCF_spaceIN); 
CF.addEventListener(MouseEvent.MOUSE_UP, fadeCF_spaceIN); 

function dragCF(evt:MouseEvent):void { 
    addChild(MovieClip(evt.currentTarget)); 
    evt.currentTarget.startDrag(); 
    stage.addEventListener(MouseEvent.MOUSE_UP, dropCF); } 

function dropCF(evt:MouseEvent):void { 
    stopDrag(); 
    stage.removeEventListener(MouseEvent.MOUSE_UP, dropCF); } 

function fadeCF_spaceIN(evt:MouseEvent):void { 
    CF_space.alpha = .5; 
    stage.addEventListener(MouseEvent.MOUSE_OUT, fadeCF_spaceOUT); 
    stage.addEventListener(MouseEvent.MOUSE_DOWN, fadeCF_spaceOUT);  } 

function fadeCF_spaceOUT(evt:MouseEvent):void { 
    CF_space.alpha = 0; 
    stage.removeEventListener(MouseEvent.MOUSE_OUT, fadeCF_spaceOUT); } 

實例說明:

+0

難道涉及到:?閃光AS3 - 拖放多個對象到一個目標(HTTPS ://sackoverflow.com/questions/15359919/flash-as3-drag-and-drop-multiple-objects-to-one-target) –

+0

我不確定,因爲我傾向於認爲我不應該有使用目標方法,因爲用戶可以在舞臺上隨機放置對象,沒有固定的目標。但是,也許我對使用它非常精通。 – too1s

+0

但那裏使用數組的方法呢?如果你會做類似的事情,並將你所有的玩家放在一起,會怎麼樣?然後,在拖動其中一名玩家後,您可以計算其拖動的方向和距離,並將其應用於該陣列中的所有其他玩家。 (我認爲這就是你想要做的,對嗎?) –

回答

0

感謝您的加入,確實也被證明是更簡單,太簡單了:

object.addEventListener(MouseEvent.MOUSE_DOWN, drag); 
object.addEventListener(MouseEvent.MOUSE_UP, drop); 

function drag(evt:MouseEvent):void { 
    addChild(MovieClip(evt.currentTarget)); 
    evt.currentTarget.startDrag(); 
} 

function drop(evt:MouseEvent):void { 
    stopDrag(); 
    object_space.x = object.x; 
    object_space.y = object.y; 
} 
0
var CF_1:Array = [CF_mc, CF_space]; // instance names 
for each(var CF1_MC:MovieClip in CF_1) 
{ 
    CF1_MC.addEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
    CF1_MC.addEventListener(MouseEvent.MOUSE_UP, dropIt); 
    CF1_MC.startX = CF1_MC.x; 
    CF1_MC.startY = CF1_MC.y; 
} 

function pickUp(event:MouseEvent):void 
{ 
    event.target.startDrag(true); 
    event.target.parent.addChild(event.target); 
} 

function dropIt(event:MouseEvent):void 
{ 
    event.target.stopDrag(); 
} 
+0

我有一種感覺,它只是一個簡單的代碼行,但我太多了一個noob我猜。我真的需要一些幫助,任何人都可以幫忙嗎? – too1s

0

不能肯定你的意思了100%,但您可以使用ENTER_FRAME函數代替的startDrag和stopDrag?這是一個非常簡單的例子,你也可以使用它的對象數組。

var xDifference:Number; 
var yDifference:Number; 
var dragging:Boolean; 

draggableObject.addEventListener(MouseEvent.MOUSE_DOWN, mDown); 
draggableObject.addEventListener(MouseEvent.MOUSE_UP, mUp); 
stage.addEventListener(Event.ENTER_FRAME, loop); 

function loop(evt:Event):void{ 
    if(dragging){ 
     draggableObject.x = mouseX; 
     draggableObject.y = mouseY; 

     secondaryObject.x = draggableObject.x + xDifference; 
     secondaryObject.y = draggableObject.y + yDifference; 
    } 
} 

function mDown(evt:MouseEvent):void{ 
    xDifference = secondaryObject.x - draggableObject.x; 
    yDifference = secondaryObject.y - draggableObject.y; 
    dragging = true; 
} 

function mUp(evt:MouseEvent):void{ 
    dragging = false; 
} 

根據您可能還需要數鼠標光標和MOUSE_DOWN draggableObject的註冊點之間的差異,以防止draggableObject跳轉到位置,它的中心點正是鼠標位置的情況。