이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

콜백 정의

콜백을 지정하는 방법

콜백 속성을 사용하려면 콜백 코드를 속성에 할당하십시오. 다음 기법 중 하나를 사용합니다.

  • 실행할 함수를 참조하는 함수 핸들

  • 함수 핸들과 추가 인수가 포함된 셀형 배열

  • 유효한 MATLAB® 표현식으로 평가되는 문자형 벡터. MATLAB은 기본 작업 공간에서 이 문자형 벡터를 실행합니다.

콜백을 문자형 벡터로 정의하는 것은 권장되지 않습니다. 함수 핸들로 지정된 함수를 사용하면 MATLAB이 콜백 함수에 중요한 정보를 제공할 수 있습니다.

자세한 내용은 콜백 함수 구문 항목을 참조하십시오.

콜백 함수 구문

그래픽스 콜백 함수는 최소 2개 이상의 입력 인수를 받아야 합니다.

  • 콜백이 실행되고 있는 객체의 핸들. 콜백 함수 내에서 이 핸들을 사용하여 콜백 객체를 참조하십시오.

  • 이벤트 데이터 구조체. 해당 객체에 대한 속성 설명에 설명된 특정 정보를 포함하거나 일부 콜백의 경우 비어 있을 수 있습니다.

콜백이 특정 트리거 동작의 결과로 실행될 때마다 MATLAB은 콜백 함수를 호출하고 이 두 인수를 함수로 전달합니다.

예를 들어, plot 함수로 생성되는 선에 대해 lineCallback이라고 하는 콜백 함수를 정의하십시오. MATLAB 경로에 lineCallback 함수를 두고, @ 연산자를 사용하여 plot으로 생성된 각 선에 대한 ButtonDownFcn 속성으로 함수 핸들을 할당합니다.

plot(x,y,'ButtonDownFcn',@lineCallback)

두 입력 인수를 받는 콜백을 정의합니다. 첫 번째 인수를 사용하여 콜백이 실행되는 특정 선을 참조합니다. 이 인수를 사용하여 선의 Color 속성을 설정합니다.

function lineCallback(src,~)
   src.Color = 'red';
end

두 번째 인수는 ButtonDownFcn 콜백에 대해 비어 있습니다. ~ 문자는 이 인수가 사용되지 않음을 나타냅니다.

추가 입력 인수 전달

콜백 함수에 대해 입력 인수를 추가로 정의하려면 디폴트 인수와 추가 인수의 올바른 순서를 유지하여 함수 정의에 인수를 추가합니다.

function lineCallback(src,evt,arg1,arg2)
   src.Color = 'red';
   src.LineStyle = arg1;
   src.Marker = arg2;
end

함수 핸들과 추가 인수를 포함하는 셀형 배열을 속성에 할당합니다.

plot(x,y,'ButtonDownFcn',{@lineCallback,'--','*'})

익명 함수를 사용하여 추가 인수를 전달할 수 있습니다. 예를 들면 다음과 같습니다.

plot(x,y,'ButtonDownFcn',...
    @(src,eventdata)lineCallback(src,eventdata,'--','*'))

관련 정보

익명 함수 사용에 대한 자세한 내용은 익명 함수 항목을 참조하십시오.

클래스 메서드를 콜백으로 사용하는 방법에 대한 자세한 내용은 Class Methods for Graphics Callbacks 항목을 참조하십시오.

MATLAB이 여러 콜백 실행을 처리하는 방법에 대한 자세한 내용은 콜백을 정의하는 객체에 대한 BusyActionInterruptible 속성을 참조하십시오.

콜백을 디폴트로 정의하기

특정 객체의 속성으로 콜백을 할당하거나 해당 유형의 모든 객체에 대한 디폴트 콜백을 정의할 수 있습니다.

모든 line 객체에 대해 ButtonDownFcn을 정의하려면 루트 수준으로 디폴트 값을 설정합니다.

  • groot 함수를 사용하여 객체 계층 구조의 루트 수준을 지정합니다.

  • MATLAB 경로에 있는 콜백 함수를 정의합니다.

  • 이 함수를 참조하는 함수 핸들을 defaultLineButtonDownFcn에 할당합니다.

set(groot,'defaultLineButtonDownFcn',@lineCallback)

디폴트 값은 MATLAB 세션에 대해 할당된 상태로 유지됩니다. startup.m 파일에 디폴트 값을 할당할 수 있습니다.