2017-04-20 57 views
0

拖放工作,但是,我不知道如何創建一個if語句,當所有影片剪輯已經放置在目標上時,if語句會轉到下一個場景。Actionscript 3將多個對象拖放到目標上做得很好

我已經嘗試將實例名稱放在與hittestobject的if語句中,但是沒有運氣。

import flash.events.TouchEvent; 
import flash.ui.Multitouch; 
import flash.ui.MultitouchInputMode; 
import flash.display.MovieClip; 

/* Touch and Drag Event 
Allows the object to be moved by holding and dragging the object. 
*/ 
var objectoriginalX:Number; 
var objectoriginalY:Number; 
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 

var lemons:Array = [lemon1_mc, lemon2_mc, lemon3_mc, lemon4_mc, lemon5_mc]; 

for each(var lemonMC:MovieClip in lemons) 
{ 
    lemonMC.buttonMode = true; 
    lemonMC.addEventListener(TouchEvent.TOUCH_BEGIN, pickobject); 
    lemonMC.addEventListener(TouchEvent.TOUCH_END, dropobject); 

    lemonMC.startX = lemonMC.x; 
    lemonMC.startY = lemonMC.y;  
} 
var fl_DragBounds:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);  

function pickobject(event:TouchEvent):void 
{ 
    event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds); 
    event.target.parent.addChild(event.target); 
    objectoriginalX = event.target.x; 
    objectoriginalY = event.target.y;  
} 

function dropobject(event:TouchEvent):void 
{ 
    if(event.target.hitTestObject(target_mc)){ 
     event.target.buttonMode = false; 
     event.target.x = target_mc.x; 
     event.target.y = target_mc.y; 
     event.target.visible = false;   
    } else { 
     event.target.x = event.target.startX; 
     event.target.y = event.target.startY; 
     event.target.buttonMode = true; 
    } 
} 

var melons:Array = [melon1_mc, melon2_mc, melon3_mc, melon4_mc, melon5_mc, melon6_mc, melon7_mc]; 
for each(var melonMC:MovieClip in melons) 
{ 
    melonMC.buttonMode = true; 
    melonMC.addEventListener(TouchEvent.TOUCH_BEGIN, pickobject2); 
    melonMC.addEventListener(TouchEvent.TOUCH_END, dropobject2); 

    melonMC.startX = melonMC.x; 
    melonMC.startY = melonMC.y;  
} 
var fl_DragBounds2:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); 

function pickobject2(event:TouchEvent):void 
{ 
    event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds2); 
    event.target.parent.addChild(event.target); 
    objectoriginalX = event.target.x; 
    objectoriginalY = event.target.y;  
} 

function dropobject2(event:TouchEvent):void 
{ 
    if(event.target.hitTestObject(target_null)){ 
     event.target.buttonMode = false; 
     event.target.x = target_mc.x; 
     event.target.y = target_mc.y; 
     event.target.visible = false;   
    } else { 
     event.target.x = event.target.startX; 
     event.target.y = event.target.startY; 
     event.target.buttonMode = true; 
    } 
} 
+0

您有沒有找到解決方案? – BadFeelingAboutThis

回答

0

如何添加計數器等於對象數目拖累,那麼你每次放下對象(並檢測它是否是目標)時,你遞減計數器,並在您檢查函數的結尾如果它是0?

+0

嗨,我將如何實現這一目標?謝謝。 – winniethepooh

+0

'var counter:Int = lemons.length + melons.length;' 然後在你做之後:'event.target.visible = false;'只是'counter - ;'並檢查它是否爲0。 – 3vilguy

0

一個簡單的方法來做到這一點將是當他們通過命中測試時,從他們的陣列中刪除你的檸檬/甜瓜。然後檢查每個數組是否爲空,如果是這種情況,則繼續到下一個場景。

實際上,您可以減少多餘的代碼,併爲檸檬和甜瓜使用相同的函數(dropobject)。

function dropobject(event:TouchEvent):void { 
    //Figure out which array this belongs to (is it a lemon or a melon) 
    var array:Array; //the array the dropped item belongs to 
    var hitMC:MovieClip; //the hit object for the lemon or melon 

    if(lemons.indexOf(event.currentTarget) > -1){ //if the lemon array contains the currentTarget 
     array = lemons; 
     hitMC = target_mc; 
    }else{ 
     array = melons; 
     hitMC = target_null; 
    } 

    if(event.currentTarget.hitTestObject(hitMC)){ 
     event.currentTarget.buttonMode = false; 
     event.currentTarget.x = hitMC.x; 
     event.currentTarget.y = hitMC.y; 
     event.currentTarget.visible = false; 

     //remove the item from it's array 
     array.removeAt(array.indexOf(event.currentTarget)); 

     //check if there are any items left 
     if(lemons.length < 1 && melons.length < 1){ 
      //both arrays are empty, so move on 
      play(); //or however you want to move on 
     } 
    } 
} 

獲得更先進,更好的方法來做到這一點是使一個基類,你想在未來拖你的檸檬,甜瓜和其他任何東西。然後,您可以將拖動功能添加到該基類中,併爲命中目標添加屬性,併爲該命中目標添加一個事件。這會給你一個可以很容易地應用於任何庫對象的代碼庫。