En este ejemplo de programa HOST escribe texto en un sistema multidisplay formado por tres pantallas de 1280 X 768 pixeles cada una, colocadas en distribución horizontal una al lado de la otra. El texto se mueve lentamente de un lado a otro de la pantalla:
Fichero displays.xml
<xml> <virtualDisplay width="3840" height="768"> <display id="1" x="0" y="0" width="1280" height="768" /> <display id="2" x="1280" y="0" width="1280" height="768" /> <display id="3" x="2560" y="0" width="1280" height="768" /> </virtualDisplay> </xml>
Codigo Host en Proccessing
public class Mariposa { public String id; public float x; public float y; public int ancho; public int alto; public float angle; //radianes } DisplaysHost displaysClient; int w = 1280; int h = 768; float movx; float movy; Mariposa mariposa; //API TACAPI miAPI; void setup() { // Keystone will only work with P3D or OPENGL renderers, // since it relies on texture mapping to deform //fullScreen( P3D); size(150, 75, P3D); miAPI = new TACAPI(); frameRate(16); //virtual screens displaysClient = new DisplaysHost("host"); mariposa = new Mariposa(); mariposa.id = "ma_azul_"; mariposa.x = random(displaysClient.w); mariposa.y = random(768); mariposa.ancho = 100; mariposa.alto = 100; mariposa.angle = radians(random(360)); movx = random(-6,6); movy = random(-6,6); } void draw() { //Pintar dibujable displaysClient.beginDraw(); displaysClient.dibujar(mariposa.id, mariposa.x, mariposa.y, mariposa.ancho, mariposa.alto, mariposa.angle, "center"); movx = random(-6,6); movy = random(-6,6); mariposa.x = mariposa.x + movx; mariposa.y = mariposa.y + movy; displaysClient.endDraw(); } void eventoTAC(TAC ta) { } void mensajeRecibido(OscMessage theOscMessage) { } void keyPressed() { switch(key) { case ESC: displaysClient.disconnect(); super.stop(); break; } }
Retos de aprendizaje
Documentación
- Para añadir elementos multimedia a los gestores pintor, ver apartado Gestión de assets.
- dibujar
Este método permite dibujar el objeto de tipo animation solicitado. Recibe los siguientes parámetros:
String id: identificador de la animación. Es imprescindible que sea igual que el nombre que se le ha puesto a su carpeta en el cliente.
float x: posición de la esquina superior izquierda del objeto en el eje X (2D).
float y: posición de la esquina superior izquierda del objeto en el eje Y (2D).
int ancho: anchura del objeto a dibujar (0 por defecto).
int alto: altura del objeto a dibujar (0 por defecto).
float angle (OPCIONAL): ángulo de rotación en radianes con el que se dibujará el objeto.
Si los valores de ancho y alto se dejan a 0, el objeto se dibujará con el tamaño original.
- reproduccion
Este método permite cambiar la velocidad de reproducción de la animación. Recibe los siguientes parámetros:
String id: identificador de la animación(el mismo que el utilizado en el método dibujar)
float rep: velocidad de la animación.
- intervalo
Este método permite cambiar el intervalo de fotogramas a reproducir de la animación. Recibe los siguientes parámetros:
String id: identificador de la animación(el mismo que el utilizado en el método dibujar)
int l1: primer fotograma del intervalo.
int l2: último fotograma del intervalo.
- secuencia
Este método reproduce una secuencia de fotogramas. Recibe los siguientes parámetros:
String id: identificador de la animación(el mismo que el utilizado en el método dibujar)
int l1: primer fotograma de la secuencia.
int l2: último fotograma de la secuencia.
- mostrarFotograma
Este método permite mostrar un fotograma en concreto. Reproduce la secuencia hasta llegar al fotograma indicado y se queda parado. Recibe los siguientes parámetros:
String id: identificador de la animación (el mismo que el utilizado en el método dibujar)
int fot: fotograma que se desea mostrar.