Paso 10: Bondad Gridly
Esta configuración permite que múltiples dispositivos poner el papel de la red. Lo que queda es añadir algunos florece final.
La mayor parte de los gráficos que ocurre en una pantalla dividida. Una más estructura de representación que cubre toda la pantalla estaría bien. Con este fin, se crea una nueva instancia de RenderArgs ArrayList.
Unos ajustes más Haz que te presenten así. La opción para fijar un factor de escala al representar un GIF. Esto permite dos características interesantes: puede centrarse un GIF grandes que de lo contrario no cabrían int una cuadrícula uniforme (ya que puede colocar cerca de la parte superior izquierda y luego la escala), y usted puede crecer/shrink GIFs como espectáculo.
La asignación de MIDI predeterminada por el legado Launchpad se ve este cuadro notablemente sofisticado:
(104) (105) (106) (107) (108) (109) (110) (111) [ 0] [ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] ( 8) [ 16] [ 17] [ 18] [ 19] [ 20] [ 21] [ 22] [ 23] ( 24) [ 32] [ 33] [ 34] [ 35] [ 36] [ 37] [ 38] [ 39] ( 40) [ 48] [ 49] [ 50] [ 51] [ 52] [ 53] [ 54] [ 55] ( 56) [ 64] [ 65] [ 66] [ 67] [ 68] [ 69] [ 70] [ 71] ( 72) [ 80] [ 81] [ 82] [ 83] [ 84] [ 85] [ 86] [ 87] ( 88) [ 96] [97] [98] [ 99] [100] [101] [102] [103] (104) [112] [113] [114] [115] [116] [117] [118] [119] (120)
Hay botones circulares en la parte superior y por la derecha; el diseño principal es una cuadrícula de 8 x 8. Los números de esa tabla son los valores de nota MIDI que cada botón envía de forma predeterminada.
Algunas cosas en cuenta: hay deficiencias en las gamas de nota y nota 104 se repite dos veces, primero en la parte superior como el primer botón y de nuevo en un botón en la parte inferior derecha.
Quería relacionar la posición del cojín a algún aspecto de un efecto para que sea más intuitiva. Como puede haber adivinado por ahora es en flujo constante, pero algunos ejemplos aquí.
La pista de Renoise se creó para enviar algunos desencadenantes de bosquejo bastante estructurado. Por ejemplo, generar una secuencia de relleno de cuadrícula.
Para los mensajes de onGridNoteNN quería ser capaz de colocar y GIFs de escala a través de la ventana de dibujo completo.
Como antes, hay una lista de datos para poner GIF en la pantalla y métodos de agregan elementos y borrar la lista.
El foco está en la sección de la plataforma: las primeras cinco columnas (de izquierda) y las filas de tres.
Moviéndose a través de las almohadillas en una fila pone un GIF en un lugar de la pantalla relativa (extrema izquierdo, un poco de izquierda, centro, etc.). Pasar de la primera fila a la tercera establece diferentes GIF escalamiento; inferior es más grande.
Golpear el pad para Nota 32 pone un GIF que llena todo el lado izquierdo; Nota 36 llena el lado derecho.
Controlar el bosquejo usando la plataforma
Todo esto funciona con una cuadrícula de 8 filas por 16 columnas. La diferencia está en el factor de escala utilizado. Agregar un GIF en la lista de RenderArgs de remderC consiste en llamar a este método:
void placeGif8x16(int index, float scaling ){ gridCRows = 8; gridCCols = 16; gridCPointer = index; centerScaling = scaling; addToGridC(); }
donde addToGridC es como addToGridL4x4.
Y, tanto como el anterior código, uso de variables globales una variedad control de indexación de direcciones de red y escala.
ADVERTENCIA: Puede provocar efectos secundarios
Una gran cantidad de procesamiento de código que veo hace abundante uso de variables globales. Es decir, variables que pueden ser accedidas y posiblemente alteradas por cualquier lugar en el bosquejo.
Generalmente este tipo de cosas me hace temblar. Pero ¿por qué? Y si es así inducir a la mortifican ¿por qué yo hago aquí?
Es un buena cobertura de los peligros de la variables globales aquí y aquí.
En Resumen, las variables globales son sólo eso: variable a nivel global. Cuando utiliza un método, como placeGifAt puede tener una variable global (p. ej. centerScaling), no existe garantía que valor de esa variable.
El valor puede han sido establecido por un método, pero luego más tarde cambiado por otro, antes de placeGifAt a utilizarlo. Este alto grado de mutabilidad, es muy difícil entender lo que va a pasar cuando se llama a placeGifAt. De hecho, es muy posible que centerScaling puede terminar con un valor totalmente inutilizable. ¿Cuando algo no se comporta correctamente, donde nos fijamos para entender por qué? ¿Si un valor utilizado en un método podría cambiarse de lugar en el código, ¿cómo controlarla?
Muchos bosquejos de procesamiento son muy pequeñas. Caber en un solo archivo y son en su mayor parte fáciles mirar a través. Si un dibujo no es terriblemente complicado entonces rastrear comportamiento raro tal vez no es un gran problema.
A partir de un pequeño programa utilizando variables globales no es un pecado mayor y puede hacer más fácil de saltar, probar cosas y juzgar los resultados. Se recomienda este tipo de exploración.
Como código crece, sin embargo, la desventaja de los efectos secundarios resultantes de variables globales cambiando en formas que entran en conflicto con finalidad de comportamiento puede crecer. Puede tener sentido empezar encapsular estas variables y las formas en que pueden accederse en clases.
En el caso de código exploratorio y codificación tal vez creativo en general, estos efectos secundarios pueden ser una bendición accidental.
Como escribí las asas para reaccionar a los mensajes de Launchpad que he añadido los métodos que una lista de información de la ubicación de los GIF. La colocación actual de estos GIFs utiliza el valor global común de centerScaling.
Sin darse cuenta de las consecuencias tuve mis métodos de cambiar el valor de centerScaling. El resultado involuntario era que todos los GIFs en renderC estaban cambiando tamaño cada vez que un método de altera el valor de centerScaling.
No lo planeaba, pero me gusta el efecto. Si corral el código en un menos desordenada estructura este tipo de comportamiento puede ser algo desea mantener.