2012-06-09 5 views
1

버튼을 클릭 할 때 세 가지 기능이 있습니다. 그것들은 거의 동일하고 하나씩 차례로 적어 놓았습니다. 내 문제는 첫 번째 기능 (아래 붙여 넣기) 작동하지만 두 번째 및 세 번째 단추를 클릭하면 아무 것도 발생합니다. 두 번째 및 세 번째 버튼에 대한 코드는 동일하지만 다른 변수가 사용됩니다.액션 스크립트 3.0의 기능 관련 문제

redStarts.addEventListener(MouseEvent.CLICK, redBars); 

function redBars(event:Event) 
{ 
    red1Starts.addEventListener(Event.ENTER_FRAME, r1); 
    red2Starts.addEventListener(Event.ENTER_FRAME, r2); 
    red3Starts.addEventListener(Event.ENTER_FRAME, r3); 

    function r1(event:Event) 
    { 
     if (red1Starts.y > 200){red1Starts.y -= 4}; 
    } 

    function r2(event:Event) 
    { 
     if (red2Starts.y > 20){red2Starts.y -= 4}; 
    } 

    function r3(event:Event) 
    { 
     if (red3Starts.y > 120){red3Starts.y -= 4}; 
    } 
} 

답변

6

중첩 된 기능을 사용하지 마십시오. 언급 한 변수의 값이 클로저에서 유지되는 것처럼 보입니다. 이 방법으로 시도해보십시오.

redStarts.addEventListener(MouseEvent.CLICK, redBars); 

function redBars(event:Event) 
{ 
    red1Starts.addEventListener(Event.ENTER_FRAME, r1); 
    red2Starts.addEventListener(Event.ENTER_FRAME, r2); 
    red3Starts.addEventListener(Event.ENTER_FRAME, r3); 
} 

function r1(event:Event) 
{ 
    if (red1Starts.y > 200){red1Starts.y -= 4}; 
} 

function r2(event:Event) 
{ 
    if (red2Starts.y > 20){red2Starts.y -= 4}; 
} 

function r3(event:Event) 
{ 
    if (red3Starts.y > 120){red3Starts.y -= 4}; 
} 
+0

감사합니다. 문제는 무대에 추가하는 데있어 일부 항목이 movieClip으로 올바르게 변환되지 않아서 내 문제의 원인이었습니다. – argh

관련 문제