2014-09-13 90 views
0

我有点新的闪存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(); 


    } 
+1

请正确格式化您的代码。我只是尝试编辑这个烂摊子,但我害怕破坏一些东西。 – lxg 2014-09-13 09:20:54

回答

0

您仍然可以拖动对象,因为它们仍然有事件侦听器。你所需要做的就是将其删除。

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; 
}  
+0

感谢这么多兄弟理查德它按计划工作,但我想让这些单词被拖到任何目标没有弹跳(即禁用弹跳),以便学生不能通过尝试得到一个标记。有没有办法做这个?只是从相同的编码 – mchucha 2014-09-14 16:31:40

+0

你应该看看Tween类。你可以做只有一行代码弹跳 – 2014-09-14 16:36:30

+0

其实我不是一个优秀的程序员兄弟,可能plz帮我从上面我的代码编码我会欣赏thanx bro理查德 – mchucha 2014-09-14 16:41:15