{"id":32483,"date":"2023-03-08T16:29:03","date_gmt":"2023-03-08T15:29:03","guid":{"rendered":"https:\/\/mimolive.com\/?post_type=user-manual&#038;p=32483"},"modified":"2025-06-16T19:35:00","modified_gmt":"2025-06-16T17:35:00","slug":"fernbedienungsvoreinstellungen-api","status":"publish","type":"user-manual","link":"https:\/\/mimolive.com\/de\/user-manual\/custom-layers\/remote-control-presets-api\/","title":{"rendered":"Fernsteuerungsvoreinstellungen API"},"content":{"rendered":"<p>Wenn Sie eine benutzerdefinierte Ebene erstellen, k\u00f6nnen Sie sogar benutzerdefinierte Steuervorgaben in Ihre Ebene aufnehmen. Dies ist praktisch, wenn Ihre Ebene \u00fcber Drucktasten verf\u00fcgt, die das Verhalten der Ebene steuern, wenn sie live ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"data-structure\">Datenstruktur<\/h3>\n\n\n\n<p>Die folgende Datenstruktur ist eine Beispielausgabe, die in Ihrer Komposition unter dem Ausgabeschl\u00fcssel der Struktur \"tvOut_ControlRepresentations\" vorhanden sein muss:<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code>{\n  \"tvOut_ControlRepresentations\": &#91;\n    {\n      \"title\": \"Compact Cut's\",\n      \"buttons\": &#91;\n        {\n          \"actions\": &#91;\n            {\n              \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n              \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\",\n              \"type\": \"signal\",\n              \"signalKey\": \"tvGroup_Control__Cut_1_TypeSignal\",\n              \"signalName\": \"Cut 1\"\n            }\n          ],\n          \"liveState\": {\n            \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n            \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\",\n            \"dynamicSourceId\": \"tvIn_VideoSourceAImage\"\n          },\n          \"sourcePreview\": {\n            \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n            \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\",\n            \"dynamicSourceId\": \"tvIn_VideoSourceAImage\"\n          },\n          \"color\": \"#BBBBBB\",\n          \"width\": 1,\n          \"height\": 1,\n          \"x\": 0,\n          \"y\": 0,\n          \"icon\": \"facetime-video\",\n          \"dynamicText\": {\n            \"template\": \"{{inputputValues.tvIn_VideoSourceAName}}\",\n            \"layerId\": \"03627C25-CC8A-474F-A738-C4DEB3353FA4\",\n            \"variantId\": \"F6F52194-06DE-462E-983A-8D505C533A69\"\n          }\n        }\n      ]\n    }\n  ]\n}<\/code><\/pre>\n\n\n\n<p>Eine Voreinstellung hat einen \"Titel\" und eine Reihe von \"Schaltfl\u00e4chen\", aber eine einzelne Schaltfl\u00e4che ist auch in Ordnung.<\/p>\n\n\n<section class=\"boinx_section\">\n    <div class=\"main_div\">\n        <div class=\"left_div_icon\">\n                <i class=\"icon_highlight\">*<\/i>\n        <\/div>\n\n        <div class=\"right_div_text\">\n                <div><p class=\"text_highlight_headline\"><\/p><\/div>\n                <div><p class=\"text_highlight\">Die Schl\u00fcssel `layerId` und `variantId` m\u00fcssen dynamisch mit den String-Daten aus den Kompositions-Eingangsschl\u00fcsseln `tvIn_LayerIdentifier` und `tvIn_RuntimeIdentifier` ausgef\u00fcllt werden.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\t\t<style>.boinx_section {\n    margin:30px 0;\n    padding:10px;\n    background-color:rgb(217,237,248);\n    border-radius: 8px;\n  \n}\n\n.icon_highlight {\n    display:block;\n    padding:5px;\n    font-size:80px;\n    color:rgb(58,134,172);\n    line-height:60px;\n}\n\n.text_highlight {\n    color:rgb(58,134,172);\n}\n\n.text_highlight_headline{\n    font-weight:bold;\n    color:rgb(58,134,172);\n}\n\n.main_div\n{\n    display:flex !IMPORTANT;\n    flex-wrap: wrap;\n    flex-direction: row;\n    justify-content : flex-start;\n    align-items : flex-start\n    align-content : flex-start;\n}\n.left_div_icon{\n    display:flex !IMPORTANT;\n    width:40px;\n    padding:0;\n    margin:10px 20px 10px 10px;\n    \n}\n.right_div_text{\n    display:flex !IMPORTANT;\n    flex-direction: column;\n    flex-grow: 1;\n    padding:10px;\n    margin:0;\n    width:200px;\n    }<\/style>\n\t\t\n\n\n<h3 class=\"wp-block-heading\" id=\"using-the-remote-control-preset-api-in-quartz-composer\">Verwenden der Fernbedienungsvoreinstellung <span class=\"caps\">API<\/span> in Quartz Composer<\/h3>\n\n\n\n\n\n<p>Die eingebauten Schichten von mimoLive verwenden eine <span class=\"caps\">LUA<\/span> Skript, um diese Datenstruktur dynamisch zu generieren, da der Quartz Composer die Generierung von Datenstrukturen nicht selbst unterst\u00fctzt. Die <span class=\"caps\">LUA<\/span> Skript enth\u00e4lt eine komplexe Funktion addButton(), die verwendet werden kann, um die Struktur f\u00fcr eine einzelne Schaltfl\u00e4che zu erstellen. Normalerweise kann man diese Funktion einfach verwenden und muss sie nicht ver\u00e4ndern. Daher ist es recht einfach, neue Fernbedienungs-Standardeinstellungen f\u00fcr Ihre eigene Ebene zu erstellen.<\/p>\n\n\n\n<p>Dies ist zum Beispiel die <span class=\"caps\">LUA<\/span> Skript, um die Fernbedienungen f\u00fcr die Stoppuhr-Ebene zu erzeugen. Bitte beachten Sie, dass Sie diesen Code \u00fcbernehmen k\u00f6nnen, indem Sie einfach die Zeilen 15 bis 29 des Codes \u00e4ndern.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code>inLayerIdentifier = QC_STRING\ninVariantIdentifier = QC_STRING\noutControlRepresentations = QC_STRUCT\nmain = function()\n  controlRepresentations = {}\n  -- first representation\n  controlRepresenation = {}\n  -- {\n    controlRepresenation&#91;\"Title\"] = \"Stop Watch\"\n    buttons = {}\n    -- {\n      -- addButton(buttonsTable, buttonTitle, subTitle, positionX, positionY, width, height, color, icon, actionTarget, liveStateSource, previewSource)\n      -- first row\n      addButton(buttons, \"{{outputValues.tvOut_TimeString}}\", \"\", 0, 0, 2, 1, \"#333333\", \"\", \"\", \"\", \"\")\n      addButton(buttons, \"Live\", \"{\\{name\\}}\", 2, 0, 1, 1, \"#333333\", \"\", \"toggleLive\", \"layerVariant\", \"\")\n      -- second row\n      addButton(buttons, \"Start\", \"\", 0, 1, 1, 1, \"#33cc33\", \"play\", \"tvGroup_Control__Start_TypeSignal\", \"\", \"\")\n      addButton(buttons, \"Stop\", \"\", 1, 1, 1, 1, \"#cc3333\", \"pause\", \"tvGroup_Control__Stop_TypeSignal\", \"\", \"\")\n      addButton(buttons, \"Reset\", \"\", 2, 1, 1, 1, \"#cccc33\", \"stop\", \"tvGroup_Control__Reset_TypeSignal\", \"\", \"\")\n    -- }\n    controlRepresenation&#91;\"buttons\"] = buttons\n  -- }\n  table.insert(controlRepresentations , controlRepresenation)\n  outControlRepresentations = controlRepresentations\nend\nfunction addButton(buttonsTable, buttonTitle, buttonSubTitle, positionX, positionY, width, height, color, icon, actionTarget, liveStateSource, previewSource)\n  local button = {}\n  -- {\n  if #buttonTitle &amp;gt; 0 then\n    if string.find(buttonTitle, \"{{\") then\n      -- dynamic titel\n      local dynamicText = {}\n      -- {\n        dynamicText&#91;\"layerId\"] = inLayerIdentifier\n        dynamicText&#91;\"variantId\"] = inVariantIdentifier\n        dynamicText&#91;\"template\"] = buttonTitle\n      -- }\n      button&#91;\"dynamicText\"] = dynamicText\n    else\n      -- static title\n      button&#91;\"text\"] = buttonTitle\n    end -- if dynamic\n  end -- if buttonTitle\n  if #buttonSubTitle &amp;gt; 0 then\n    if string.find(buttonSubTitle, \"{{\") then\n      -- dynamic titel\n      local dynamicSubText = {}\n      -- {\n        dynamicSubText&#91;\"layerId\"] = inLayerIdentifier\n        dynamicSubText&#91;\"variantId\"] = inVariantIdentifier\n        dynamicSubText&#91;\"template\"] = buttonSubTitle\n      -- }\n      button&#91;\"dynamicSubText\"] = dynamicSubText\n    else\n      -- static title\n      button&#91;\"subtext\"] = buttonSubTitle\n    end -- if dynamic\n  end -- if buttonSubTitle\n  button&#91;\"x\"] = positionX\n  button&#91;\"y\"] = positionY\n  button&#91;\"width\"] = width\n  button&#91;\"height\"] = height\n  if #color &amp;gt; 0 then\n    button&#91;\"color\"] = color\n  end -- if\n  if #actionTarget &amp;gt; 0 then\n    local actions = {}\n    -- {\n      local action = {}\n      -- {\n        action&#91;\"layerId\"] = inLayerIdentifier\n        action&#91;\"variantId\"] = inVariantIdentifier\n        if string.ends(actionTarget, \"_TypeSignal\") then\n          action&#91;\"type\"] = \"signal\"\n          action&#91;\"signalKey\"] = actionTarget\n          action&#91;\"signalName\"] = buttonTitle\n        elseif actionTarget == \"toggleLive\" then\n          action&#91;\"type\"] = \"toggleLive\"\n        else\n          action&#91;\"type\"] = \"toggleSwitch\"\n          action&#91;\"toggleSwitchKey\"] = actionTarget\n          action&#91;\"toggleSwitchName\"] = buttonTitle\n        end -- if\n      -- }\n      table.insert(actions , action)\n    -- }\n    button&#91;\"actions\"] = actions\n  end -- if actionTarget\n  if #liveStateSource &amp;gt; 0 then\n    local liveState = {}\n    -- {\n      liveState&#91;\"layerId\"] = inLayerIdentifier\n      liveState&#91;\"variantId\"] = inVariantIdentifier\n      if string.starts(liveStateSource,\"tvIn_VideoSource\") then\n        -- get the live state from a dynamic video source\n        liveState&#91;\"dynamicSourceId\"] = liveStateSource\n      elseif liveStateSource == \"layerVariant\" then\n        -- nor more information needed\n      else\n        liveState&#91;\"propertyPath\"] = liveStateSource            end -- if\n    -- }\n    button&#91;\"liveState\"] = liveState\n  end -- if liveState Source\n  if #previewSource &amp;gt; 0 then\n    local sourcePreview = {}\n    -- {\n      sourcePreview&#91;\"layerId\"] = inLayerIdentifier\n      sourcePreview&#91;\"variantId\"] = inVariantIdentifier\n      sourcePreview&#91;\"dynamicSourceId\"] = previewSource\n    -- }\n    button&#91;\"sourcePreview\"] = sourcePreview\n  end -- if\n  if #icon &amp;gt; 0 then\n    -- See bottom of documentation page for list of avaiable icon names\n    button&#91;\"icon\"] = icon\n  end -- if\n  -- }\n  table.insert(buttonsTable, button)\nend -- func\nfunction string.starts(String,Start)\n   return string.sub(String,1,string.len(Start))==Start\nend\nfunction string.ends(String,End)\n   return End=='' or string.sub(String,-string.len(End))==End\nend<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Button Positionierung<\/h3>\n\n\n\n<p>Bei der Verwendung mehrerer Schaltfl\u00e4chen muss das Layout der Schaltfl\u00e4chen manuell gesteuert werden. Das bedeutet, dass die Schaltfl\u00e4chen mit den Attributen \"x\" und \"y\" auf dem Raster positioniert werden, die ebenso wie die Attribute \"Breite\" und \"H\u00f6he\" in Vielfachen von Rasterzellen angegeben werden. Die Positionen sind relativ zu der linken oberen Gitterzelle, auf die die Schaltfl\u00e4chengruppe gezogen wurde.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-positioning\">Button-Aktionen<\/h3>\n\n\n\n<p>Buttons kann mehrere Aktionen, eine einzige Aktion oder gar keine Aktion haben. Es gibt verschiedene g\u00fcltige Kombinationen von Aktionszielen und Aktionstypen.<br>Beachten Sie, dass die Aktionen \"textInput\" und \"numericInput\" f\u00fcr sich allein stehen sollten, da eine einheitliche Benutzererfahrung in der Fernbedienung nicht gew\u00e4hrleistet ist.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"action-targets\">Aktionsziele<\/h4>\n\n\n\n<p>Aktionsziele sind Elemente innerhalb des mimoLive-Dokuments. Sie werden in einer hierarchischen Weise adressiert:<\/p>\n\n\n\n<p>Die \"Dokument-ID\" wird immer zur Laufzeit gezeichnet, sie muss also nicht in der Voreinstellung vorhanden sein.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wenn weder \"layerId\" noch \"variantId\" angegeben werden, wird die Aktion f\u00fcr das Dokument selbst ausgel\u00f6st.<\/li>\n\n\n\n<li>Wenn \"layerId\" angegeben wird, wird die Aktion auf der angegebenen Ebene ausgel\u00f6st.<\/li>\n\n\n\n<li>Wenn \"layerId\" <b>und<\/b> \"variantId\" angegeben sind, wird die Aktion f\u00fcr die angegebene Variante ausgel\u00f6st. Nur in diesem Fall kann der zus\u00e4tzliche \"toggleSwitchKey\" oder \"signalKey\" angegeben werden (siehe Aktionstypen unten).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"action-types\">Aktionsarten<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Aktion Typ<\/th><th>Erl\u00e4uterung<\/th><th>Zus\u00e4tzliche Attribute<\/th><th>G\u00fcltige Ziele<\/th><\/tr><tr><td>toggleLive<\/td><td>Live-Status umschalten<\/td><td>keine<\/td><td>Dokument (Start\/Stop Show), Ebene, Variante<\/td><\/tr><tr><td>setLive<\/td><td>Live-Status auf \"live\" setzen<\/td><td>keine<\/td><td>Dokument (Start Show), Ebene, Variante<\/td><\/tr><tr><td>setOff<\/td><td>Live-Status auf \"Aus\" setzen<\/td><td>keine<\/td><td>Dokument (Stop Show), Ebene, Variante<\/td><\/tr><tr><td>Signal<\/td><td>Ein Signal ausl\u00f6sen<\/td><td>signalKey, signalName (empfohlen)<\/td><td>Variante<\/td><\/tr><tr><td>toggleSwitch<\/td><td>Umschalten eines booleschen Eingabewerts<\/td><td>toggleSwitchKey, toggleSwitchName (empfohlen)<\/td><td>Variante<\/td><\/tr><tr><td>textEingabe<\/td><td>\u00d6ffnet ein Texteingabefeld, das beim Absenden den Wert unter inputKey aktualisiert.<\/td><td>inputKey, inputName (empfohlen)<\/td><td>Ebene, Variante, Quelle<\/td><\/tr><tr><td>numericInput<\/td><td>Schieberegler, der einen numerischen Wert bei inputKey steuert.<\/td><td>inputKey, inputDescription (Objekt mit Mindest- und H\u00f6chstwerten), inputName (empfohlen)<\/td><td>Ebene, Variante, Quelle<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<section class=\"boinx_section\">\n    <div class=\"main_div\">\n        <div class=\"left_div_icon\">\n                <i class=\"icon_highlight\">*<\/i>\n        <\/div>\n\n        <div class=\"right_div_text\">\n                <div><p class=\"text_highlight_headline\"><\/p><\/div>\n                <div><p class=\"text_highlight\">Die Aktionstypen \"textInput\" und \"numericInput\" sind seit mimoLive 5.2 verf\u00fcgbar.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-live-state\">Button Live State<\/h3>\n\n\n\n<p>Mit dem \"liveState\"-Objekt kann der Zustand der Kontrollleuchte der Schaltfl\u00e4che konfiguriert werden, die eingeschaltet (rote Markierung), im \u00dcbergang (gelbe Markierung) oder ausgeschaltet (keine Markierung) sein kann.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"live-state-sources\">Live-Status-Quellen<\/h4>\n\n\n\n<p>\u00c4hnlich wie bei den Tastenaktionszielen kann der Live-Status aus mehreren Quellen bezogen werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die \"Dokument-ID\" wird immer zur Laufzeit gezeichnet, sie muss also nicht in der Voreinstellung vorhanden sein.<\/li>\n\n\n\n<li>Wenn weder \"layerId\" noch \"variantId\" angegeben werden, wird der Live-Zustand des Dokuments verwendet (Show hat begonnen oder nicht).<\/li>\n\n\n\n<li>Wenn \"layerId\" angegeben wird, wird der Live-Status der Ebene verwendet.<\/li>\n\n\n\n<li>Wenn \"layerId\" und \"variantId\" angegeben werden, wird der Live-Status der Variante verwendet.<br>- Nur in diesem Fall kann der zus\u00e4tzliche \"propertyPath\" angegeben werden, um anzuzeigen, dass eine boolesche Eigenschaft der Ein- oder Ausgabewerte der Variante verwendet werden muss.<br>- Eine weitere M\u00f6glichkeit (die sich mit propertyPath gegenseitig ausschlie\u00dft!) ist die Angabe einer \"dynamicSourceId\"-Eigenschaft, die die Suche nach dem Live-Status auf eine Quelle umleitet (die \u00fcber die ID abgerufen wird), die dynamische \u00c4nderungen der ausgew\u00e4hlten Quelle (z. B. im Videoumschalter) ber\u00fccksichtigt. Der Wert von \"dynamicSourceId\" wird in den Eingabewerten der Variante nachgeschlagen.<\/li>\n<\/ul>\n\n\n\n<p><i>*<\/i>Geben Sie den vollst\u00e4ndigen Pfad zur Eigenschaft an, beginnend mit der Variante als Wurzel, z. B. \"inputValues.some_Boolean_Property\" oder \"outputValues.other_Property\".<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wenn \"sourceId\" angegeben wird, wird der Live-Status der Quelle verwendet.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"button-text\">Button Text<\/h3>\n\n\n\n<p>Aktionsschaltfl\u00e4chen k\u00f6nnen prim\u00e4re und sekund\u00e4re Textzeilen anzeigen, die beide statischer oder dynamischer Natur sein k\u00f6nnen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"primary-text\">Prim\u00e4rer Text<\/h4>\n\n\n\n<p>Dieser Text ist der Hauptindikator daf\u00fcr, was die Schaltfl\u00e4che f\u00fcr den Benutzer tun wird. Wenn die Schaltfl\u00e4chenvorgabe eine Texteigenschaft enth\u00e4lt, handelt es sich um einen statischen Text, der so angezeigt wird, wie er ist.<\/p>\n\n\n\n<p>Alternativ kann ein dynamicText angegeben werden, der die Einbeziehung von mimoLive-Ebenen- oder -Varianteneigenschaften unter Verwendung einer einfachen Vorlagensyntax erm\u00f6glicht. In der Vorlagenzeichenfolge k\u00f6nnen regul\u00e4re Zeichen mit in geschweiften Klammern eingeschlossenen Eigenschaftspfaden kombiniert werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code>\"template\": \"{\\{propertyPath\\}}\"<\/code><\/pre>\n\n\n\n<p>Eigenschaftspfade werden relativ zu dem Objekt ausgewertet, das mit \"layerId\", \"variantId\", \"sourceId\" und \"filterId\" aufgel\u00f6st wird. Die Zielaufl\u00f6sung folgt diesen Regeln:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die \"Dokument-ID\" wird immer zur Laufzeit gezeichnet, sie muss also nicht in der Voreinstellung vorhanden sein.<\/li>\n\n\n\n<li>Wenn weder \"layerId\" noch \"variantId\" angegeben werden, werden die Eigenschaftspfade relativ zum Dokument ausgewertet<\/li>\n\n\n\n<li>Wenn \"layerId\" (und optional \"variantId\") angegeben wird, werden die Eigenschaftspfade relativ zu einer Ebene\/Variante ausgewertet.<\/li>\n\n\n\n<li>Auf die \u00fcbergeordnete Ebene einer Variante kann man zugreifen, indem man einen Pfad mit \"Ebene\" beginnt, z. B. \"aslayer.name\".<\/li>\n<\/ul>\n\n\n<section class=\"boinx_section\">\n    <div class=\"main_div\">\n        <div class=\"left_div_icon\">\n                <i class=\"icon_highlight\">*<\/i>\n        <\/div>\n\n        <div class=\"right_div_text\">\n                <div><p class=\"text_highlight_headline\"><\/p><\/div>\n                <div><p class=\"text_highlight\">Das erste Pfadsegment der Eingabe- und Ausgabewerte muss in CamelCase (\"inputValues.tvIn...\") und nicht in Kebab-Case (\"input-values.tvIn...\") wie in den API-Dokumenten angegeben sein.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\n\n\n<ul class=\"wp-block-list\">\n<li>Der statische Text hat immer Vorrang vor dem dynamischen Text, denn so k\u00f6nnen die Benutzer den dynamischen Text mit einem benutzerdefinierten Text \u00fcberschreiben, der in ihrer Situation n\u00fctzlicher sein k\u00f6nnte.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"secondary-text\">Sekund\u00e4rer Text<\/h4>\n\n\n\n<p>Um dem Benutzer weitere Informationen \u00fcber eine Schaltfl\u00e4che zu geben, wie z. B. den Namen der \u00fcbergeordneten Ebene, kann ein sekund\u00e4rer Text mit den Eigenschaften \"subtext\" oder \"dynamicSubText\" angegeben werden.<\/p>\n\n\n\n<p>Die Syntax der Vorlagen und die Aufl\u00f6sung der Objekte folgen genau denselben Regeln wie der Prim\u00e4rtext.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"button-text-and-icon-size\">Button Text und Icon Gr\u00f6\u00dfe<\/h4>\n\n\n\n<p>Der Text und die Icons auf den Schaltfl\u00e4chen k\u00f6nnen je nach Kontext in der Gr\u00f6\u00dfe variieren. Mit der Option \"fontScale\" k\u00f6nnen Sie eine relative Skalierung zu einer Standardgr\u00f6\u00dfe angeben, die f\u00fcr die aktuelle Bildschirmgr\u00f6\u00dfe berechnet wird. \"1\" ist die Standardgr\u00f6\u00dfe. Kleiner als 1 (z.B. 0.8) verkleinert die Schriftgr\u00f6\u00dfe und gr\u00f6\u00dfer als 1 (z.B. 1.5) vergr\u00f6\u00dfert sie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Button Vorschau<\/h3>\n\n\n\n<p>Aktionsschaltfl\u00e4chen k\u00f6nnen ein Vorschaubild der Quelle anzeigen, die sie steuern, oder jede andere im Dokument verf\u00fcgbare Quelle.<\/p>\n\n\n\n<p>Je nachdem, ob es sich um eine statische Quelle handelt (nur Bilder, die in mimoLive gezogen wurden), kann eine statische <span class=\"caps\">PNG<\/span> Repr\u00e4sentation der Quelle geladen wird, die einen Alphakanal unterst\u00fctzt. F\u00fcr jede andere Quelle wird eine <span class=\"caps\">JPEG<\/span> Die Darstellung der Quelle wird regelm\u00e4\u00dfig aktualisiert. Die angestrebte Aktualisierungsrate f\u00fcr dynamische Quellen betr\u00e4gt 5 Bilder pro Sekunde. Diese Rate wird jedoch reduziert, wenn die Geschwindigkeit der Netzwerkverbindung f\u00fcr das wiederholte Laden der Vorschaubilder nicht ausreicht.<\/p>\n\n\n\n<p>Es wird derzeit nicht unterst\u00fctzt, die Programmausgabe des Dokuments auf einer Aktionsschaltfl\u00e4che anzuzeigen. Die Standardbilder der Ebene sind zwar nicht in der Liste der Quellen sichtbar, aber f\u00fcr die Vorschau verf\u00fcgbar.<\/p>\n\n\n\n<p>Zur Angabe einer Quellenvorschau wird ein Objektaufl\u00f6sungsmechanismus verwendet:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die \"Dokument-ID\" wird immer zur Laufzeit gezeichnet, sie muss also nicht in der Voreinstellung vorhanden sein.<\/li>\n\n\n\n<li>Wenn \"sourceId\" angegeben wird, wird die Quelle mit dieser ID f\u00fcr die Vorschau verwendet.<\/li>\n\n\n\n<li>Wenn alle Werte von \"layerId\", \"variantId\" und \"dynamicSourceId\" angegeben werden, wird die ID der Quelle in der Variante der angegebenen Ebene unter dem Schl\u00fcssel in \"dynamicSourceId\" nachgeschlagen. Dies kann verwendet werden, um Quellen wie die Quelle A-G des Videoumschalters zu referenzieren, auch wenn sie im Dokument ge\u00e4ndert werden.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Button Farbe<\/h3>\n\n\n\n<p>Durch die Verwendung des Attributs \"color\" k\u00f6nnen Schaltfl\u00e4chen mit jedem Farbcode eingef\u00e4rbt werden, der sich in <span class=\"caps\">HTML<\/span> (z.B. \"#f80\", \"#ff0088\", \"orange\", oder \"rgb(255, 66, 88)\").<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Button-Symbol<\/h3>\n\n\n\n<p>Buttons k\u00f6nnen ein Icon anzeigen, um ihre Funktionalit\u00e4t anzuzeigen. Um eine Liste aller verf\u00fcgbaren Icons zu sehen, \u00f6ffnen Sie http:\/\/localhost:8989\/icons\/demo.html, w\u00e4hrend mimoLive l\u00e4uft und die Fernbedienungen aktiviert sind.<br>Verwenden Sie den einfachen Namen des Symbols, z. B. \"R\u00fcckw\u00e4rts\" oder \"Pfeil nach unten\".<\/p>","protected":false},"excerpt":{"rendered":"<p>If you are creating a custom layer, there is the possibility of even including custom control presets with your layer. This come in handy if your layer has push buttons that controls the behaviour of your layer when its live. Data Structure The following data structure is a sample output which needs to be present [&hellip;]<\/p>","protected":false},"author":3,"featured_media":0,"parent":32482,"menu_order":1,"template":"","meta":{"_acf_changed":false,"_angie_page":false,"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[258],"tags":[],"class_list":["post-32483","user-manual","type-user-manual","status-publish","hentry","category-manual"],"acf":[],"_links":{"self":[{"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/user-manual\/32483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/user-manual"}],"about":[{"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/types\/user-manual"}],"author":[{"embeddable":true,"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":2,"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/user-manual\/32483\/revisions"}],"predecessor-version":[{"id":40973,"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/user-manual\/32483\/revisions\/40973"}],"up":[{"embeddable":true,"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/user-manual\/32482"}],"wp:attachment":[{"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/media?parent=32483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/categories?post=32483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mimolive.com\/de\/wp-json\/wp\/v2\/tags?post=32483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}