BEGIN_JUMP( número de jumper, función miembro ) ... END_JUMP
La sentencia BEGIN_JUMP() sirve para poder ejecutar un método "función miembro" con funciones tipo FRAME: JUMP_FRAME() o JUMP_FRAME_PERCENT(), necesita dos parámetros de entrada:
1º El número de jumper a usar el cual podremos usar desde 0 hasta (n - 1) siendo "n" el número de "jumpers" inicializados por INIT_JUMP() inicializar los "jumpers" o saltadores de código. Este mismo número es el que utilizaremos en las sucesivas llamadas a JUMP_FRAME() o JUMP_FRAME_PERCENT().
2º El método "función miembro" en si con sus parámetros de entrada/salida omitiendo el tipo ya que siempre ha de ser de tipo entero "int".
La sentencia END_JUMP sirve para cerrar el bloque de código abierto por BEGIN_JUMP().
Nota: Sin no se requiere utilizar funciones tipo FRAME, se puede declarar el método "función miembro" de la manera clásica de C++.
PROCESS( pru ) PUBLIC int i; // Inicializamos el número de "jumpers" que vamos a utilizar // en este caso 2 INIT_JUMP(2) // función miembro "prueba2()" admite parámetros y sentencias: // JUMP_FRAME(número de jumper) // JUMP_FRAME_PERCENT(número de jumper, %frame ) // mismo funcionamiento que sus respectivas BEGIN_JUMP(1, prueba2()) write_int(0, 0, 0, 0, &i); for( i = 0; i < 200; i++ ) { JUMP_FRAME(1); } END_JUMP // función miembro "prueba()" // JUMP_ANCHOR(número de jumper, función miembro tipo JUMP) // establece el ancla de salto, para que en sucesivas llamadas // se pueda seguir ejecutando "prueba()" hasta que termine // "prueba2()" BEGIN_JUMP(0, prueba()) JUMP_ANCHOR(0, prueba2()); END_JUMP BEGIN // ANCHOR(función miembro tipo JUMP) // establece el ancla de salto, para que en sucesivas llamadas // se pueda seguir ejecutando "prueba()" hasta que termine ANCHOR(prueba()); write(0, 0, 20, 0, "Final de código."); write(0, 0, 40, 0, "Pulse ESC para terminar."); while(!key(_esc)) FRAME; END MAIN_PROGRAM_CDIV BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m640x480); // Creamos el proceso new pru(); LOOP FRAME; END_PROGRAM
En este ejemplo vemos como se pude llamar a una función miembro capaz de ejecutar sentencias tipo FRAME, que a su vez llama a otra función miembro con igual operabilidad para mostrar un resultado y es capaz de dibujarlo por medio de la sentencia JUMP_FRAME() o JUMP_FRAME_PERCENT().
Las funciones miembro llamadas por medio de ANCHOR() o JUMP_ANCHOR() no pierden el valor de los parámetros de entrada ya que en cada ciclo vuelven a ser llamadas con dichos valor en sus parámetros, si estos cambiasen fuesen cambiados por otra función las funciones que utilicen dichos parámetros también serian afectadas. Además dichas funciones han de ser obligatoriamente de tipo entero "int".
Es posible anidar llamadas de funciones miembro por medio de las funciones ANCHOR() o JUMP_ANCHOR() siempre y cuando tengamos suficientes "jumpers" inicializados por medio de la función INIT_JUMP().
Ver: Sintaxis - INIT_JUMP() - ANCHOR() - JUMP_ANCHOR() - JUMP_FRAME() - JUMP_FRAME_PERCENT()