Definición de callback
Métodos para especificar callbacks
Para utilizar las propiedades de callback, asigne el código de callback a la propiedad. Utilice una de las siguientes técnicas:
Un identificador de función que hace referencia a la función que se va a ejecutar.
Un arreglo de celdas que contiene un identificador de función y argumentos adicionales
Un vector de caracteres que evalúa una expresión de MATLAB® válida. MATLAB evalúa el vector de caracteres en el área de trabajo base.
No se recomienda definir un callback como un vector de caracteres. El uso de una función especificada como un identificador de función permite que MATLAB proporcione información relevante a la función de callback.
Para obtener más información, consulte Sintaxis de la función de callback.
Sintaxis de la función de callback
Las funciones de callback de gráficas deben admitir al menos dos argumentos de entrada:
El identificador del objeto cuyo callback se está ejecutando. Utilice este identificador en la función de callback para hacer referencia al objeto de callback.
La estructura de datos del evento, que puede estar vacía en algunos callbacks o contener información específica que se describe en la descripción de la propiedad de dicho objeto.
Siempre que el callback se ejecuta como resultado de la acción desencadenadora específica, MATLAB llama a la función de callback y transfiere ambos argumentos a la función.
Por ejemplo, defina una función de callback llamada lineCallback
para las líneas que ha creado la función plot
. Con la función lineCallback
en la ruta de MATLAB, utilice el operador @
para asignar el identificador de función a la propiedad ButtonDownFcn
de cada línea que ha creado plot
.
plot(x,y,'ButtonDownFcn',@lineCallback)
Defina el callback para aceptar dos argumentos de entrada. Utilice el primer argumento para hacer referencia a la línea específica cuyo callback se está ejecutando. Utilice este argumento para establecer la propiedad Color
de la línea:
function lineCallback(src,~) src.Color = 'red'; end
El segundo argumento está vacío para el callback ButtonDownFcn
. El carácter ~
indica que este argumento no se utiliza.
Transferencia de argumentos de entrada adicionales
Para definir argumentos de entrada adicionales para la función de callback, añada los argumentos a la definición de la función manteniendo el orden correcto de los argumentos predeterminados y los argumentos adicionales:
function lineCallback(src,evt,arg1,arg2) src.Color = 'red'; src.LineStyle = arg1; src.Marker = arg2; end
Asigne un arreglo de celdas que contenga el identificador de función y los argumentos adicionales a la propiedad:
plot(x,y,'ButtonDownFcn',{@lineCallback,'--','*'})
Puede utilizar una función anónima para transferir argumentos adicionales. Por ejemplo:
plot(x,y,'ButtonDownFcn',... @(src,eventdata)lineCallback(src,eventdata,'--','*'))
Información relacionada
Para obtener más información acerca del uso de funciones anónimas, consulte Funciones anónimas.
Para obtener más información acerca del uso de métodos de clase como callbacks, consulte Class Methods for Graphics Callbacks.
Para obtener más información acerca de cómo MATLAB resuelve la ejecución de varios callbacks, consulte las propiedades BusyAction
y Interruptible
de los objetos que definen los callbacks.
Definir un callback como valor predeterminado
Puede asignar un callback a la propiedad de un objeto específico o definir un callback predeterminado para todos los objetos de ese tipo.
Para definir ButtonDownFcn
para todos los objetos de línea, establezca un valor predeterminado en el nivel de raíz.
Utilice la función
groot
para especificar el nivel de raíz de la jerarquía de objetos.Defina una función de callback que esté en la ruta de MATLAB.
Asigne un identificador de función que haga referencia a esta función a
defaultLineButtonDownFcn
.
set(groot,'defaultLineButtonDownFcn',@lineCallback)
El valor predeterminado permanece asignado durante la sesión de MATLAB. Puede realizar la asignación del valor predeterminado en el archivo startup.m
.