Actionscript 3 与目标进行拖放

Actionscript 3 与目标进行拖放,actionscript-3,flash,drag-and-drop,Actionscript 3,Flash,Drag And Drop,我对flash as3有点陌生,但是我正在做一个课件应用程序,它包括将单词拖拽到适当的目标中,如果正确匹配分数,还包括一个20秒的计时器,用于完成练习。但我的问题是,在我将单词拖到正确位置并获得相关分数(我对每个正确答案使用10分)之后,我仍然可以拖动单词并使用每个拖动的单词一次又一次地打分(即,我希望无法拖动单词),这使得用户的分数超过了更高的分数(即90分,因为要拖动9个单词) 这是我的代码 stop(); import flash.events.MouseEvent;

我对flash as3有点陌生,但是我正在做一个课件应用程序,它包括将单词拖拽到适当的目标中,如果正确匹配分数,还包括一个20秒的计时器,用于完成练习。但我的问题是,在我将单词拖到正确位置并获得相关分数(我对每个正确答案使用10分)之后,我仍然可以拖动单词并使用每个拖动的单词一次又一次地打分(即,我希望无法拖动单词),这使得用户的分数超过了更高的分数(即90分,因为要拖动9个单词)

这是我的代码

 stop();    
    import flash.events.MouseEvent;   
    import flash.events.TimerEvent;    
    import flash.utils.Timer;    
    var myscore1 = 0;  score.text = myscore1+"";

    var hitArray:Array = new Array(love_tgt, am_stud_tgt, living_tgt, is_improv_tgt, speak_tgt,
                                   means_tgt, are_help_tgt, want_tgt, miss_tgt);    
    var dropArray:Array = new Array(love, am_stud, living, is_improv, speak, means, are_help,
                                    want, miss);    
var positionsArray:Array = new Array();

    for (var i:int = 0; i < dropArray.length; i++) {
         dropArray[i].buttonMode = true;
         dropArray[i].addEventListener(MouseEvent.MOUSE_DOWN, mdown);
         dropArray[i].addEventListener(MouseEvent.MOUSE_UP, mUp);

         positionsArray.push({xPos:dropArray[i].x, yPos:dropArray[i].y});
    }

    function mdown(e:MouseEvent):void {
        e.currentTarget.startDrag();
        setChildIndex(MovieClip(e.currentTarget), numChildren - 1);
    }

    function mUp(e:MouseEvent):void {   
    var dropIndex:int = dropArray.indexOf(e.currentTarget);   
    var target:MovieClip = e.currentTarget as MovieClip;    
    target.stopDrag();

        if (target.hitTestObject(hitArray[dropIndex])) {
                myscore1+=10;
                score.text = myscore1+""; 

                target.x = hitArray[dropIndex].x;
                target.y = hitArray[dropIndex].y;
            }else{
               target.x = positionsArray[dropIndex].xPos;
               target.y = positionsArray[dropIndex].yPos;
            }    
    }


    var myTimer1:Timer = new Timer(1000);    
    myTimer1.addEventListener(TimerEvent.TIMER, countdownHandler1);    
    function  countdownHandler1(event:TimerEvent):void{       
    countdown.text = 20-myTimer1.currentCount+" s remaining";
             if(myTimer1.currentCount==20){
                gotoAndStop(46);
             }      }  

      myTimer1.start();


    }
stop();
导入flash.events.MouseEvent;
导入flash.events.TimerEvent;
导入flash.utils.Timer;
var myscore1=0;score.text=myscore1+“”;
var hitArray:Array=新数组,
意思是“帮助”、“想要”、“小姐”;
var dropArray:Array=new Array(爱,我是螺柱,活着,是即兴,说话,意思,是帮助,
想要,小姐);
变量位置数组:数组=新数组();
for(变量i:int=0;i
您仍然可以拖动对象,因为它们仍然有事件侦听器。您只需将其删除即可

if (target.hitTestObject(hitArray[dropIndex])) {
      myscore1+=10;
      score.text = myscore1+""; 

       target.x = hitArray[dropIndex].x;
       target.y = hitArray[dropIndex].y;

       //add these 2 lines---------------------------------------------
       target.removeEventListener(MouseEvent.MOUSE_DOWN, mdown);
       target.removeEventListener(MouseEvent.MOUSE_UP, mUp);
       //--------------------------------------------------------------
 }else{
      target.x = positionsArray[dropIndex].xPos;
      target.y = positionsArray[dropIndex].yPos;
 }    

请正确格式化你的代码。我刚刚试着编辑这个乱七八糟的东西,但我害怕弄坏一些东西。Thanx这么多兄弟Richard,它按计划工作,但我想让单词在不反弹的情况下拖到任何目标上(即禁用反弹)所以一个学生不可能仅仅通过尝试就得到分数。有没有办法做到这一点?仅仅从同一个编码你应该看看Tween类。你可以用一行代码来做跳跃实际上我不是一个优秀的程序员兄弟,请允许我从我上面的编码中帮助我?我会感谢thanx bro RichardNope,做你的研究并尝试我别客气。努力一点。你试过之后我会帮你的