> ## 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ão

> Botão

# Botão

Um controle básico que pode responder à entrada por toque do jogador. Pode ser estilizado para ter arte personalizada tanto para o fundo quanto para a imagem frontal.

## Propriedades

`type` - *"button"*. Especifica o tipo de controle.

`action` - *string*. [Ação(ões)](/pt-BR/reference/system/touchadaptationkit/types/game-streaming-touch-action) a serem invocadas quando um jogador toca no botão.

`enabled` - *boolean*, *opcional*. O padrão é `true`. Define o estado visual do controle como habilitado/desabilitado. Um controle desabilitado ainda receberá entrada do jogador, mas *não* alterará o estilo visual com base na entrada.

`pullAction` - *string* ou  *object*, *opcional*. A(s) [Ação(ões)](/pt-BR/reference/system/touchadaptationkit/types/game-streaming-touch-action) a serem invocadas quando um jogador puxa o botão durante um toque. Ao definir a ação de puxar como um objeto, conforme mostrado nos exemplos abaixo, o botão de puxar se torna segmentado, de modo que cada item na matriz `items` da ação de puxar atribui uma ação a esse segmento. Os segmentos são espaçados uniformemente ao redor do botão, com até 4 segmentos permitidos.

* Propriedades da ação de puxar segmentada (introduzidas na v4.1)

  * `type` - *"segmented"*. Especifica que o tipo da ação de puxar é uma ação de puxar segmentada.

  * `items` - *array*. Uma matriz de até 4 [Ações](/pt-BR/reference/system/touchadaptationkit/types/game-streaming-touch-action), cada uma delas invocada quando um jogador arrasta ou puxa um toque até a borda do controle na direção desse segmento.

`toggle` - *boolean*, *opcional*. O padrão é `false`.

* Se `false`, a entrada do botão será enviada quando ele estiver pressionado e não será enviada quando não estiver pressionado.
* Se `true`, cada pressionamento do botão alternará se a entrada está sendo enviada para as ações correspondentes.

`visible` - *boolean*, *opcional*. O padrão é `true`. Determina se o controle é exibido para o jogador interagir. Para alterar durante a jogabilidade, consulte [Alterando layouts de toque usando o estado do jogo](/pt-BR/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-touch-changing-layouts-game-state#change_state).

`styles` - *object*, *opcional*. Personalização da representação visual do controle. Os estilos são representados como um objeto por estado que pode ser estilizado.

O controle de botão pode ter os seguintes estados estilizados.

* `default` - O estilo base.
* `disabled` - O estilo quando o controle está desabilitado. Se não for especificado, quando o controle estiver desabilitado, uma transformação será aplicada ao estilo padrão para que ele pareça desabilitado.
* `idle` - Aplicado quando o jogador *não* está interagindo com o controle.
* `activated` - Aplicado quando o jogador está tocando no botão.
* `pulled` - Aplicado quando o jogador está tocando e puxando um botão. Para ações de puxar segmentadas, somente o segmento que está sendo puxado é estilizado com esse estado; os outros segmentos mantêm o estilo `activated`.
* `toggled` - Aplicado quando o botão está em um estado alternado e o jogador não está tocando no botão.

**Propriedades de estilo por estado**

`opacity` - *number*, *opcional*. A opacidade a ser aplicada ao controle. O padrão é 1.0 para todos os estados, exceto `disabled`.

`faceImage` - *object*, *opcional*. Pode ser um [ícone](/pt-BR/reference/system/touchadaptationkit/types/game-streaming-touch-icon) ou um [ativo de imagem](/pt-BR/reference/system/touchadaptationkit/types/game-streaming-touch-asset).

`background` - *object*, *opcional*. Pode ser uma [cor](/pt-BR/reference/system/touchadaptationkit/types/game-streaming-touch-color) ou um [ativo de imagem](/pt-BR/reference/system/touchadaptationkit/types/game-streaming-touch-asset). Não fica visível nos estados ocioso e desabilitado.

**Dimensões dos ativos**

Para cada um dos objetos de estilo que aceitam ativos de imagem, um determinado ativo é fornecido em uma resolução base e nas escalas 1.5x, 2.0x, 3.0x e 4.0x dessa resolução base. A resolução de uma determinada imagem deve ser menor ou igual às seguintes resoluções 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 |

## Comentários

Os botões são comumente usados para permitir que o jogador execute ações que normalmente seriam feitas por um ou mais botões físicos em seu controle físico.

Utilize várias ações para permitir que o jogador reproduza facilmente ações combinadas (por exemplo, pressionar o botão LB e o botão RB simultaneamente).

**Comentários sobre estilo**

No estado `activated`, a `faceImage` é exibida 25% menor.

Há rótulos e estilo padrão para a cor de fundo dos botões que não usam ativos personalizados e têm uma única ação `gamepadX`, `gamepadY`, `gamepadA` ou `gamepadB`.

## Exemplos

#### Exemplo 1: Botão de pular mapeado para o botão A

<img src="https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button.gif?s=585c8746250b36534c236117851e82f4" alt="Usuário pressionando um botão" width="160" height="160" data-path="images/gdk/reference/game-streaming-touch-control-images-button.gif" />

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

#### Exemplo 2: Botão de agachar mapeado para pressionar o botão LB e o botão RB simultaneamente

<img src="https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button-2.gif?s=0c9485ee05b533ae100e8edaee6882b6" alt="Usuário pressionando um botão mapeado para duas ações" width="160" height="160" data-path="images/gdk/reference/game-streaming-touch-control-images-button-2.gif" />

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

#### Exemplo 3: Botão com imagem frontal e imagem de fundo personalizadas

<img src="https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button-3.gif?s=4503a193449c834d72a50e19a111e9d2" alt="Usuário pressionando um botão com um ativo personalizado" width="160" height="160" data-path="images/gdk/reference/game-streaming-touch-control-images-button-3.gif" />

```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"
            }
        }
    }
}
```

#### Exemplo 4: Ação de puxar segmentada com estilo personalizado por segmento

<Note>Para estilizar botões de puxar segmentados, a matriz `pullIndicator` deve ter o mesmo comprimento que a propriedade `items` que definiu os segmentos. Em outras palavras, cada segmento deve ter uma definição de estilo, ou `null` deve ser usado para omitir substituições de estilo para um segmento específico.</Note>

<img src="https://mintcdn.com/microsoft-4404708b/-_0FrcE2bDxzGxv-/images/gdk/reference/game-streaming-touch-control-images-button-segmented-pull.gif?s=d28b3799cc728ed15d8af352b009bb46" alt="Usuário pressionando um botão com uma ação de puxar segmentada." width="184" height="184" data-path="images/gdk/reference/game-streaming-touch-control-images-button-segmented-pull.gif" />

```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

**Versão mínima do layout:** 1.0+ (suporte a estilo na 2.0+).

## Consulte também

[Referência do Touch Adaptation Kit](/pt-BR/build/core-features/common/game-streaming/game-streaming-touch-touch-adaptation-kit-overview)


## Related topics

- [Etapas do teste de validação de mídia](/pt-BR/publishing/game-publishing/concepts/certification/certification-media-validation-test-steps.md)
- [Terminologia](/pt-BR/publishing/certification/console-cert-terminology.md)
- [Terminology](/publishing/certification/console-cert-terminology.md)
- [Terminología](/es/publishing/certification/console-cert-terminology.md)
- [Terminologie](/fr-CA/publishing/certification/console-cert-terminology.md)
