> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Botón

> Botón

# Botón

Un control básico que puede responder a la entrada táctil del jugador. Puede aplicarle estilos para tener ilustraciones personalizadas tanto para el fondo como para la imagen frontal.

## Propiedades

`type` - *"button"*. Especifica el tipo de control.

`action` - *string*. [Acciones](/es/reference/system/touchadaptationkit/types/game-streaming-touch-action) que se invocan cuando un jugador toca el botón.

`enabled` - *boolean*, *opcional*. El valor predeterminado es `true`. Establece el estado visual del control como habilitado o deshabilitado. Un control deshabilitado seguirá recibiendo la entrada del jugador, pero *no* cambiará el estilo visual en función de la entrada.

`pullAction` - *string* u *object*, *opcional*. Las [acciones](/es/reference/system/touchadaptationkit/types/game-streaming-touch-action) que se invocan cuando un jugador tira del botón durante un toque. Al definir la acción de tirar como un objeto, como se muestra en los ejemplos siguientes, el botón de tirar se segmenta de forma que cada elemento de la matriz `items` de la acción de tirar asigna una acción a ese segmento. Los segmentos se distribuyen de manera uniforme alrededor del botón, con un máximo de 4 segmentos permitidos.

* Propiedades de la acción de tirar segmentada (introducida en la versión 4.1)

  * `type` - *"segmented"*. Especifica que el tipo de la acción de tirar es una acción de tirar segmentada.

  * `items` - *array*. Una matriz de hasta 4 [acciones](/es/reference/system/touchadaptationkit/types/game-streaming-touch-action), cada una de las cuales se invoca cuando un jugador arrastra o tira de un toque hasta el borde del control en la dirección de ese segmento.

`toggle` - *boolean*, *opcional*. El valor predeterminado es `false`.

* Si es `false`, la entrada del botón se enviará cuando se presione y no cuando no se presione.
* Si es `true`, cada vez que se presione el botón se alternará si se envía la entrada para las acciones correspondientes.

`visible` - *boolean*, *opcional*. El valor predeterminado es `true`. Determina si el control se muestra al jugador para que interactúe con él. Para cambiarlo durante el juego, consulte [Cambio de diseños táctiles mediante el estado del juego](/es/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-touch-changing-layouts-game-state#change_state).

`styles` - *object*, *opcional*. Personalización de la representación visual del control. Los estilos se representan como un objeto por cada estado al que se pueden aplicar estilos.

El control de botón puede tener estilos aplicados a los siguientes estados.

* `default` - El estilo base.
* `disabled` - El estilo cuando el control está deshabilitado. Si no se especifica, cuando el control esté deshabilitado, se aplicará una transformación al estilo predeterminado para que parezca deshabilitado.
* `idle` - Se aplica cuando el jugador *no* está interactuando con el control.
* `activated` - Se aplica cuando el jugador está tocando el botón.
* `pulled` - Se aplica cuando el jugador está tocando un botón y tirando de él. Para las acciones de tirar segmentadas, solo el segmento del que se está tirando recibe el estilo de este estado; los demás segmentos conservan el estilo de `activated`.
* `toggled` - Se aplica cuando el botón está en estado alternado y el jugador no está tocando el botón.

**Propiedades de estilo por estado**

`opacity` - *number*, *opcional*. La opacidad que se aplica al control. El valor predeterminado es 1.0 para todos los estados excepto `disabled`.

`faceImage` - *object*, *opcional*. Puede ser un [icono](/es/reference/system/touchadaptationkit/types/game-streaming-touch-icon) o un [recurso de imagen](/es/reference/system/touchadaptationkit/types/game-streaming-touch-asset).

`background` - *object*, *opcional*. Puede ser un [color](/es/reference/system/touchadaptationkit/types/game-streaming-touch-color) o un [recurso de imagen](/es/reference/system/touchadaptationkit/types/game-streaming-touch-asset). No es visible en los estados idle y disabled.

**Dimensiones de los recursos**

Para cada uno de los objetos de estilo que aceptan recursos de imagen, un recurso determinado se proporciona en una resolución base y en escalas de 1.5x, 2.0x, 3.0x y 4.0x de esa resolución base. La resolución de una imagen determinada debe ser menor o igual que las siguientes resoluciones máximas.

| Objeto | @1.0x | @1.5x | @2.0x | @3.0x | @4.0x |
| :- | :- | :- | :- | :- | :- |
| faceImage | 60x60 | 90x90 | 120x120 | 180x180 | 240x240 |
| background | 60x60 | 90x90 | 120x120 | 180x180 | 240x240 |

## Comentarios

Los botones se usan habitualmente para permitir al jugador realizar acciones que normalmente se harían con uno o varios botones físicos de su mando físico.

Utilice varias acciones para permitir al jugador replicar fácilmente acciones combinadas (por ejemplo, presionar el gatillo superior izquierdo y el gatillo superior derecho simultáneamente).

**Comentarios sobre estilos**

Cuando está en el estado `activated`, la `faceImage` se muestra un 25 % más pequeña.

Hay etiquetas y estilos predeterminados para el color de fondo de los botones que no usan recursos personalizados y tienen una sola acción de `gamepadX`, `gamepadY`, `gamepadA` o `gamepadB`.

## Ejemplos

#### Ejemplo 1: Botón de salto asignado al botón A

![Usuario presionando un botón](https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button.gif?s=585c8746250b36534c236117851e82f4)

```JSON theme={null}
{
    "type": "button",
    "action": "gamepadA",
    "styles": {
        "default": {
            "faceImage": {
                "type": "icon",
                "value": "jump"
            }
        }
    }
}
```

#### Ejemplo 2: Botón de agacharse asignado a presionar el gatillo superior izquierdo y el gatillo superior derecho simultáneamente

![Usuario presionando un botón asignado a dos acciones](https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button-2.gif?s=0c9485ee05b533ae100e8edaee6882b6)

```JSON theme={null}
{
    "type": "button",
    "action": [ "leftBumper", "rightBumper"] ,
    "styles": {
        "default": {
            "faceImage": {
                "type": "icon",
                "value": "crouch"
            }
        }
    }
}
```

#### Ejemplo 3: Botón con imagen frontal e imagen de fondo personalizadas

![Usuario presionando un botón con un recurso personalizado](https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button-3.gif?s=4503a193449c834d72a50e19a111e9d2)

```JSON theme={null}
{
    "type": "button",
    "action": "gamepadA",
    "enabled" : true,
    "styles": {
        "default": {
            "background": {
                "type": "asset",
                "value": "hex_background"
            },
            "faceImage": {
                "type": "asset",
                "value": "one"
            }
        },
        "activated": {
            "background": {
                "type": "asset",
                "value": "hex_background_glow"
            }
        }
    }
}
```

#### Ejemplo 4: Acción de tirar segmentada con estilos personalizados por segmento

> [!NOTE]
>
> Para aplicar estilos a los botones de tirar segmentados, la matriz `pullIndicator` debe tener la misma longitud que la propiedad `items` que definió los segmentos. En otras palabras, cada segmento debe tener una definición de estilo o se debe usar `null` para omitir las invalidaciones de estilo de un segmento específico.

![Usuario presionando un botón con una acción de tirar segmentada.](https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button-segmented-pull.gif?s=d28b3799cc728ed15d8af352b009bb46)

```JSON theme={null}
{
    "type": "button",
    "action": "gamepadA",
    "pullAction": {
       "type": "segmented",
       "items": [
          "gamepadB",
          "gamepadY"
       ]
    },
    "styles": {
        "default": {
           "pullIndicator": [
               {
                 "faceImage": {
                    "type": "icon",
                    "value": "sword"
                 }
               },
               {
                 "faceImage": {
                    "type": "icon",
                    "value": "block"
                 }
               }
            ]
        },
        "idle": {
           "pullIndicator": [
               null,
               {
                 "opacity": 0.5
               }
            ]
        }
    }
}
```

## Requisitos

**Versión mínima del diseño:** 1.0+ (compatibilidad con estilos en 2.0+).

## Consulte también

[Referencia del Touch Adaptation Kit](/es/build/core-features/common/game-streaming/game-streaming-touch-touch-adaptation-kit-overview)


## Related topics

- [Iniciadores de juegos y dispositivos portátiles](/es/build/gdk-and-engines/handheld/handheld-launchers.md)
- [Metadatos de accesibilidad](/es/publishing/game-publishing/concepts/metadata-accessibility.md)
- [Enumeración GAMEPAD_BUTTONS](/es/reference/tools/xtf/xtfinput/enumerations/GAMEPAD_BUTTONS-typedef-xtfinput-xbox-windows-t.md)
- [XGameStreamingGamepadPhysicality](/es/reference/system/xgamestreaming/enums/xgamestreaminggamepadphysicality.md)
- [XFrontPanelButton](/es/reference/devkit/xfrontpaneldisplay/enums/xfrontpanelbutton.md)
