Referencia de objeto
10 min
los reproductores brightsign utilizan una biblioteca estandarizada de objetos brightscript para exponer funcionalidades para el desarrollo de software para publicar una nueva api para interactuar con el hardware de brightsign, creamos un nuevo objeto brightscript las páginas de esta sección proporcionan definiciones para objetos que pueden utilizarse en brightscript se proporciona una breve descripción, una lista de interfaces y las funciones miembro de las interfaces para cada clase de objeto aunque la mayoría de los objetos brightscript tienen páginas independientes, algunos objetos se agrupan en la misma página si están estrechamente relacionados o dependen unos de otros para su funcionalidad aquí se muestra un ejemplo de objetos que se utilizan con frecuencia al crear aplicaciones en brightscript rovideomode docid\ f0dvnrbdpvgozlrvb29gd configura la salida de video e interactúa con pantallas utilizando cec/edid rorectangle docid\ i2oxoxnlwggzmpwranoql se utiliza para definir zonas/widgets en la pantalla este objeto se pasa a muchos otros objetos para definir su área de pantalla, incluidos rovideoplayer , roimageplayer, roimagewidget , rohtmlwidget , roclockwidget , y rocanvaswidget rovideoplayer docid\ oszbyfpamasbwnd6w7jsh reproduce archivos de video, transmisiones y entrada hdmi® roimageplayer docid\ z65qez0xwq9c70obegcyi muestra imágenes rohtmlwidget docid\ g tjkqqhlcft4fw5 z6t0 muestra contenido html local o remoto utilizando el motor de renderizado chromium ronetworkconfiguration docid\ nb5kguphymfjugcngukrt se utiliza para configurar parámetros de ethernet, wifi y red local rodeviceinfo docid\ yudjoipuduw rc3fyb zz se utiliza para recuperar una amplia variedad de información del sistema, incluidos el tipo de modelo, el número de serie del dispositivo y la versión del firmware interfaces y métodos cada objeto brightscript consta de una o más "interfaces" una interfaz consta de uno o más "métodos" por ejemplo, el objeto rovideoplayer tiene varias interfaces, incluida ifmessageport la interfaz ifmessageport tiene un método setport() la interfaz abstracta ifmessageport está expuesta e implementada tanto por los objetos rocontrolport como por rovideoplayer una vez que se llama al método setport(), estos objetos enviarán sus eventos al puerto de mensajes proporcionado esto se analiza más detalladamente en la sección event loops a continuación ejemplo p = createobject("romessageport") video = createobject("rovideoplayer") gpio = createobject("rocontrolport", "brightsign") gpio setport(p) video setport(p) la sintaxis anterior utiliza un atajo proporcionado por el lenguaje el nombre de la interfaz es opcional, a menos que sea necesario para resolver conflictos de nombres por ejemplo, las siguientes dos líneas de código realizan exactamente la misma función gpio setport(p) gpio ifmessageport setport(p) los objetos brightscript constan únicamente de interfaces, y las interfaces definen únicamente métodos no existe el concepto de una "propiedad" o variable en el nivel de objeto o interfaz estos deben implementarse como métodos "set" o "get" en una interfaz clases se utiliza un nombre de clase para crear un objeto brightscript por ejemplo, el nombre de clase para una instancia de reproducción de video es rovideoplayer , por lo tanto, para inicializar una instancia de reproducción de video, utilizaría código similar al siguiente ejemplo video = createobject("rovideoplayer") tenga en cuenta que "video" puede ser cualquier nombre que siga la sintaxis descrita en la siguiente sección sintaxis de nombres de objetos y clases los nombres de clase tienen las siguientes características deben comenzar con un carácter alfabético (a – z) pueden constar de caracteres alfabéticos, números o el símbolo " " (es decir, guion bajo) no distinguen entre mayúsculas y minúsculas pueden tener cualquier longitud razonable zonas con la función brightsign zones, puede dividir la pantalla en rectángulos y reproducir contenido diferente en cada rectángulo dependiendo del modelo brightsign, las zonas pueden contener video, imágenes, contenido html, audio, un reloj o texto los modelos 4kx42, xdx32 y xdx30 pueden mostrar dos zonas de video en pantalla, mientras que los modelos hdx22, hdx20 y lsx22 solo pueden mostrar una puede haber múltiples zonas de otros tipos en la pantalla una zona de texto puede contener cadenas de texto simples o configurarse para mostrar una fuente rss en una visualización tipo ticker a partir del firmware 6 0 x, el soporte de zonas está habilitado de forma predeterminada cuando las zonas están habilitadas, la capa de imagen está sobre la capa de video de forma predeterminada el comportamiento predeterminado puede modificarse utilizando el método rovideomode setgraphicszorder() el soporte de zonas puede deshabilitarse llamando a enablezonesupport(false) cuando las zonas no están habilitadas, la capa de imagen se oculta cada vez que se reproduce video, y la capa de video se oculta cada vez que se reproducen imágenes bucles de eventos al escribir cualquier cosa más que un script muy simple, será necesario crear un "bucle de eventos" los bucles de eventos suelen tener la siguiente estructura esperar un evento procesar el evento volver al paso 1 un evento puede ser cualquier cantidad de ocurrencias se ha presionado un botón; se ha activado un temporizador; se ha recibido un mensaje udp; un video ha terminado de reproducirse; etc por convención, el scripting de eventos para objetos brightscript sigue este flujo de trabajo el script crea un objeto del tipo romessageport los objetos que pueden enviar eventos (es decir, aquellos que admiten la interfaz ifmessageport/ifsetmessageport ) reciben instrucciones para enviar sus eventos a este puerto de mensajes utilizando el método setport() puede configurar múltiples puertos de mensajes y hacer que cada evento vaya a su propio puerto de mensajes, pero normalmente es más sencillo crear un puerto de mensajes y hacer que todos los eventos se envíen a este único puerto el script espera un evento utilizando la instrucción integrada wait() (o el método ifmessageport waitmessage() ) si se asignan múltiples instancias de objetos al mismo puerto de mensajes, el script determina de qué instancia se originó el evento y luego lo procesa el script vuelve después a la instrucción wait() ejemplo 'listens for udp messages on two different ports and displays the image file requested in the udp message body mp = createobject("romessageport") udp1 = createobject("rodatagramreceiver", 3000) udp1 setport(mp) udp1 setuserdata("port 3000") udp2 = createobject("rodatagramreceiver", 5000) udp2 setport(mp) udp2 setuserdata("port 5000") r = createobject("rorectangle",0, 0, 1920, 1080) img = createobject("roimageplayer") img setrectangle(r) loop event = wait(0, mp) if type(event) = "rodatagramevent" 	print "image play command received on " + event getuserdata() + " " 	img = displayfile("sd /" + event getstring()) 	endif endif goto loop