0:08
Ahora que hemos agregado controles a nuestro ambiente de scripting, veamos algunos de los
0:12
metadata disponibles en el Árbol de Control. En este momento ya te debes estar muy familiarizado
0:18
con .Value, .String y .Position para la mayoría de los controles, así que veamos algunas propiedades
0:25
más. En los videos siguientes, exploraremos como se pueden crear funciones para cambiar cada
0:31
propiedad, pero por ahora, vamos a asegurarnos qué propiedades están a nuestra disposición.
0:38
Primero, hay algunas opciones visuales. .Color, por ejemplo, cambia el color visual principal de un
0:44
control. Lo encontrarás útil para cambiar el color de un fader cuando se aproxima a los límites de su
0:50
rango, por ejemplo, o cuando su canal está muteado.
0:54
La propiedad .Color puede ser representada por códigos de color en hexadecimal, al igual que los
1:00
nombres de color en HTML.
1:02
En el Block Controller, puedes usar esta propiedad con el Bloque “Set Control Visual”. Si no te gusta
1:08
ninguno de estos 70 colores, puedes seleccionar uno diferente aquí en la categoría de Values.
1:14
Y si vemos en el Lua generado por este Block Controller, veremos que solamente asigna un valor al
1:19
Árbol de control de .Color
1:22
La propiedad .Legend se refiere a la etiqueta del control. Esto es diferente al nombre que le das
1:28
cuando creas el control, “Kevin”, el cual no puede cambiarse en el script.
1:33
El Legend (etiqueta) es lo mismo que escribir sobre un control para renómbralo, y como puedes
1:39
cambiar la inscripción de manera dinámica con un script, esta es una gran forma de cambiar la
1:43
etiqueta del botón basados en su estatus.
1:46
En el Block Controller, encontrarás esto representado por otro bloque “Set Control Visual”. Estos
1:52
bloques “Set Control Visual” son todos el mismo bloque con un elemento visual pre seleccionado, así
1:58
que solo cambia este menú desplegable para cambiar su objetivo.
2:03
Ya que estamos aquí, veamos algunas propiedades más. .IsInvisible es una propiedad que puede
2:09
colocarse ya sea “true” o “false” para hacer un control invisible o visible de nueva cuenta. Puedes
2:15
usar esto, por ejemplo, para ocultar ciertos controles del teléfono en una UCI cuando el teléfono está
2:22
De manera similar, la opción visual .IsDisabled hará que un control se ponga semi transparente y que
2:29
no podamos interactuar con él. Esto permite que el usuario sepa que no puede activar ese control en
2:35
ese estado particular.
2:37
La propiedad. IsIndeterminate es otro ejemplo de un botón deshabilitado, aunque es menos probable
2:43
que apliques este estado en un control ya que debes leer esta propiedad de un control.
2:48
Cuando un dispositivo periférico no está conectado a la red, por ejemplo, sus controles toman este
2:53
color rojo difuminado, lo cual es el resultado de estar Indeterminado. Significa que el sistema no
2:59
puede determinar la conexión entre este control y su dispositivo asociado, y, por lo tanto, es
3:07
Digamos que estás monitoreando un contacto seco de una alarma contra incendios en un IO Frame -
3:13
puedes monitorear tanto el Value para cualquier señal de una alarma, como también su propiedad
3:17
.IsIndeterminate. Cuando esta propiedad se hace verdadera, entonces sabrás que ya no tienes
3:24
conexión con ese dispositivo, lo que significa que tu sistema de alarmas no funcionará.
3:29
Fíjate que una Perilla tiene sus propiedades .Value, .String y .Position disponibles aquí en el Block
3:36
Controller, pero un botón Toggle tiene algo diferente – tiene una propiedad llamada .Boolean. Para
3:42
un control que solo tiene dos estados como un botón binario, .Boolean representa esencialmente su
3:49
Cuando se refiere a sí mismo, Boolean se asume como verdadero, pero puedes cambiar Boolean a
3:55
falso para desactivar el control. En un Script de Lua, sin embargo, puedes referenciar la propiedad
4:01
.Boolean de un botón al igual que sus propiedades .Value, .String o .Position.
4:07
Para controles de entrada, hay una propiedad muy importante en árbol de control y que veremos
4:13
mucho en los siguientes videos: .EventHander.
4:17
En un mundo lleno de eventos, alguien tiene que hacerse cargo de ellos “Consideralo… hecho”
4:25
El EventHandler de un control es disparado cuando el estado de ese control cambia. Básicamente es
4:32
el indicador de que algo ha ocurrido, lo cual puedes usar para iniciar una acción. Esto solo tiene
4:38
sentido como entrada en árbol de control – y lo usaremos mucho cuando comencemos a escribir
4:45
Si deseas que algo suceda cuando se presiona un botón, entonces usas el .EventHandler para hacer
4:51
que eso suceda. En el Block Controller, esto se representa con este bloque de “On Control Change”
4:58
(cuando cambia el control), el cual – si vemos el Lua que se genera – es el comienzo de una función,
5:04
iniciada por nuestro buen amigo el EventHandler.
5:08
Algunos tipos de controles tiene la propiedad .Values – Así en plural, Values, lo que es diferente al
5:16
.Value. Por ejemplo, un medidor puede entregar tanto el valor pico como el valor promedio como un
5:23
arreglo usando esto. También está la propiedad .Choices para controles con menús desplegables de
5:31
Par acontroles de Salida, puedes usar la propiedad .RampTime para establecer un intervalo de tiempo
5:37
en el que el control cambia de un valor a otro, así que la próxima ves que coloques la propiedad .
5:43
Value o .Position de un control, puedes establecer este tiempo para llegar ahí. La propiedad
5:49
.RampTime se expresa en segundos.
5:52
Finalmente, veamos los botones de Trigger. Hemos dicho algunas veces que los triggers son únicos
5:58
debido a que no tienen Value, String o Position. Normalmente puedes cambiar el estado de un
6:04
control ajustando estas propiedades, pero para un trigger, necesitamos hacer esto: Control:Trigger().
6:13
Fíjate que usé dos puntos en lugar de un punto. Los dos puntos indican un método, en lugar de una
6:20
propiedad. Un método es una acción que puede realizar un control. No tienes que poner el :Trigger a
6:28
verdadero o falso, solo necesitas los dos puntos para activar este método.
6:33
Hay algunos métodos en el árbol de control que encontrarás para ciertos controles. Los verás cuando
6:39
comiences a lidiar con Timers, los cuales tiene métodos :Start y :Stop, o conexiones TCP que tienen
6:47
métodos como :Connect, :Disconnect, etc.
6:52
No entraremos en la creación de conexiones TCP en Lua en este entrenamiento en línea, debido a
6:58
que es mucho más fácil usar el Block Controller para enviar y recibir cadenas a través de la red. Y si
7:03
quieres activar un Trigger en el block controller, encontrarás un bloque específico para ese control el
7:09
cual activa su método.
7:11
Ok, hemos ido tan lejos como necesitamos en el Árbol de Control por ahora, así que regresemos a
7:17
nuestra hoja de trabajo. No hay un ejercicio para esta sección, solo una demostración de algunas de
7:22
estas propiedades. Échale un vistazo y continua, ya que, lo que sigue es crear algunas funciones,
7:28
¡para que tu script pueda hacer algo! Continua cuando estés listo.