2012-03-29 14 views
0

文法が正しく機能していません。イベントリスナーを削除し、ムービークリップを位置に移動します。

他のムービークリップに触れているときにサウンドを配列に追加するムービークリップがあります。 私はバーのイベントリスナーを削除して元の位置に戻したいと思っています。

私のコードは次のとおりです。

//event listener for the start button 
playy.addEventListener(MouseEvent.CLICK, mouseClick2); 

function mouseClick2(event:MouseEvent):void 
{ 
    bar.addEventListener(Event.ENTER_FRAME, onEnter); 
} 


//Add event listener for the stop button 
stopp.addEventListener(MouseEvent.CLICK, mouseClick3); 


//when clicked remove listener send back to position 
function mouseClick3(event:MouseEvent):void 
{ 
    bar.removeEventListener(MouseEvent.CLICK, mouseClick3); 

    function mouseClick3(evt:Event):void 
    { 
     if(bar.x > 780) 
     { 
      bar.x = 215; 
     } 
    } 
} 


function onEnter(evt:Event):void 
{ 
    bar.x += 1; 

    if(bar.x > 780) 
    { 
     bar.x = 215; 
    } 

    for(var i:int=0; i<blocks.length;i++) 
    { 
     if (bar.hitTestObject(blocks[i])) 
     { 
      blocks[i].start(); 
     } 
     else 
     { 
      blocks[i].stopSound(); 
     } 
    } 
} 
+3

問題は、 'function mouseClick3()'が別の 'function mouseClick3()'にネストされていることです。 – Marty

答えて

0

私はあなたの関数は、このなければならないことを推測している:

//when clicked remove listener send back to position 
function mouseClick3(event:MouseEvent):void 
{ 
    bar.removeEventListener(MouseEvent.CLICK, mouseClick3); 

    if(bar.x > 780) 
    { 
     bar.x = 215; 
    } 
} 

問題は、あなたがそこに二つの「mouseClick3」の機能を持っているということです。内側のmouseClick3は決して実際には実行されません。removeEventListenerは実行されないmouseClick3をターゲットにします。これは、関数内の変数ローカルなのでです。内側のmouseClick3を削除すると、コードが実行され、リスナーは正しい関数をターゲットにします。

関連する問題