2017-04-20 33 views
0

ドラッグ&ドロップは機能しますが、すべてのムービークリップがターゲットに配置されたときに次のシーンに移動するifステートメントを作成する方法はわかりません。Actionscript 3ドラッグして複数のオブジェクトをターゲットにドラッグしてドロップします

私はインスタンス名をif文に配置しようとしましたが、hittestobjectは運がありません。ドラッグするオブジェクトの数に等しいカウンタの追加について、そしてあなたがオブジェクトをドロップする(そしてそれがターゲットにあったかどうかを検出)するたびにあなたがカウンターをデクリメントし、チェック機能の終了時にどのように

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カウンタ:Int = lemons.length + melons.length;' それから、 'event.target.visible = false;'単に 'counter - ;'を実行し、それが0であるかどうかをチェックします。 – 3vilguy

0

これを行う簡単な方法は、ヒットテストに合格したときにレモン/メロンを配列から削除することです。次に、各配列が空であるかどうかをチェックし、次のシーンに進む。

実際には、冗長コードを減らして、レモンとメロンの両方に同じ機能(dropオブジェクト)を使用できます。

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 
     } 
    } 
} 

より高度な取得、これを行うには良い方法は、あなたが将来的にドラッグしたいあなたのレモン、メロンや他の何かのための基本クラスを作ることであろう。その後、その基本クラスにドラッグ機能を追加し、ヒットターゲットのプロパティとヒットしたターゲットのイベントを追加できます。これにより、任意のライブラリオブジェクトに簡単に適用できる1つのコードベースが得られます。

関連する問題