2012-11-22 45 views
0

我有幾個與水果相關的球。我想要這樣,當有人把球拖到相關的水果上時,它會調用一個動作(在這種情況下,追蹤'命中水果'),如果不是,那就做別的事情。目前它沒有檢測到這一點。拖放多個對象和目標

我發現我可以在舞臺上添加一個偶數聽衆來檢測何時完成,但問題是我有多個球,每個球都有多個水果。任何人都可以告訴我如何去做這件事。

我從一個PHP/JavaScript的背景,我只是一個初學者,當談到AS3

ball1.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ball1.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 


function mouseUpHandler(e:MouseEvent):void { 
    var obj = e.target; 

    if (e.target.hitTestObject("fruit1")) { 
    trace('hit fruit1'); 
    } else { 

    trace('Not hit fruit'); 
    } 

    obj.stopDrag(); 

} 

回答

1

您可以使用一個數組來存儲所有的水果和使用循環測試哪個球是拖放:

var fruitArray:Array = new Array(); 
fruitArray.push(fruit1); 
fruitArray.push(fruit2); 
fruitArray.push(fruit3); 

function onMouseUp(e:MouseEvent) : void 
{ 
    for(var j=0; j<fruitArray.length; j++) { // Every piece of fruit is tested.. 
     if(e.target.hitTestObject(fruitArray[j])) { // ..against the ball being dragged 
      trace("hit fruit:", fruitArray[j]); 
     } 
    } 
} 

您將需要使用類似的閉環系統的事件偵聽器添加到球開始,你可以以極快的果實成不同類型的小陣列只玩,和根據特定的水果陣列檢查球。

+0

如果一次只拖動一個球,則不需要兩個四個循環。這樣你只需檢查Active球並減少回調計算。 – Gone3d

+0

哈哈絕對正確,不知道我錯過了那一個。在MOUSE_UP上,你只需要檢查當前正在用水果數組拖動的球 - 已經更新了答案來反映這一點。 –