Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

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 detalla en la descripción de la propiedad de dicho objeto.

Siempre que el callback se ejecuta como resultado de la acción desencadenante 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 pasar 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 Anonymous Functions.

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 resuelve MATLAB la ejecución de varios callbacks, consulte las propiedades BusyAction e 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.