2010-06-26 4 views
0

를 통해 인수로 그래서 내가 2 초마다 (마우스 클릭 이벤트 발생 후)이 함수를 호출하려면이 기능을전달 전자 : 된 MouseEvent setInterval을

capture_mc.buttonMode = true; 
capture_mc.addEventListener(MouseEvent.CLICK,captureImage); 

function captureImage(e:MouseEvent):void { 
//lalalala 

} 

있습니다. 나는 setInterval을

setInterval(captureImage,2000,e:MouseEvent); 

를 사용하여 시도했지만 오류

1084: Syntax error: expecting rightparen before colon. 

문제점은 무엇입니까 다음에 이르게? 그리고, 나는 AS에 익숙하지 않다.

답변

2

먼저 AS3이므로 TimerTimerEvent을 사용해야합니다. 예제에서 어떻게 설명 할 것입니다.

지금 당신은 당신의 기능을 분리해야합니다 :

편집 : 나는이 업데이트되었습니다이 @ (후안 파블로 Califano)의 제안에 따라 더 안전합니다. 시간의 양이 바뀌지 않으면 나는 똑같은 타이머를 영원히 유지할 것이다.

// first param is milliseconds, second is repeat count (with 0 for infinite) 
private var captureTimer:Timer = new Timer(2000, 0); 
captureTimer.addEventListener(TimerEvent.TIMER, handleInterval); 

function handleClick(event:MouseEvent):void 
{ 
    // call here if you want the first capture to happen immediately 
    captureImage(); 

    // start it 
    captureTimer.start(); 
} 

function handleInterval(event:TimerEvent):void 
{ 
    captureImage(); 
} 

function captureImage():void 
{ 
    // lalalala 
} 

원하는 경우 언제든지 captureTimer.stop()으로 타이머를 중지 할 수도 있습니다.

+0

고마워요 :) –

+2

일을. 타이머가'handleClick'의 최상단에서 실행되고 있는지, 그리고 실행 중인지 확인하는 것도 좋은 생각입니다. (타이머가 문맥에 맞는 것이면 타이머를 재설정하십시오). 이것은 단순한 boolean 플래그로 구현하거나'captureTimer'가 null이 아닌지 검사 할 수 있습니다. 그렇지 않으면, 당신은 여러 개의 타이머를 실행시킬 수 있고 결국 멈출 수있는 방법이 없습니다. 왜냐하면 새로운'Timer' 객체를'captureTimer' 변수에 할당 할 때 이전의 참조를 잃어 버리기 때문입니다. –

1

형식 매개 변수를 선언 할 때 (또는 varconst을 선언 할 때)에만 parameterName:ParameterType 구문을 사용해야하는 것이 문제입니다. 의미, 이것은 당신이 함수를 정의하는 경우에만 유효합니다

function func(paramName:Type){ 
} 

함수를 호출 할 때, 당신은 인수의 유형을 넣을 필요가 없습니다.

그래서, 함수 호출은 다음과 같아야합니다

setInterval(captureImage,2000,e); 
관련 문제