2012-03-29 4 views
0

Ich habe Probleme, die Syntax richtig zu machen.Entfernen Sie den Ereignis-Listener und verschieben Sie den Movieclip an die Position

Ich habe einen Movieclip, der Sounds zu einem Array hinzufügt, wenn andere Movieclips berührt werden. Ich habe eine Stop-Taste, als ich den Event-Listener der Bar entfernen und an die ursprüngliche Position zurücksenden möchte.

Mein Code ist:

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

Ein Problem, das Sie haben, ist 'Funktion mouseClick3()' geschachtelt werden innerhalb einer anderen 'Funktion mouseClick3()'. – Marty

Antwort

0

Ich vermute, dass Ihre Funktion dies sein sollte:

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

Das Problem ist, dass Sie in zwei "mouseClick3" Funktionen haben. Das innere mouseClick3 wird nie wirklich ausgeführt, und removeEventListener zielt auf mouseClick3, das niemals ausgeführt wird, da dies die Variable local in der Funktion ist. Wenn Sie das innere mouseClick3 entfernen, wird der Code ausgeführt und Ihr Listener wird auf die richtige Funktion ausgerichtet.