Guia de início rápido: determinando a velocidade angular com o girômetro (HTML)
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]
Você pode usar o giroscópio para detectar mudanças no movimento com um aplicativo escrito em JavaScript. Os giroscópios complementam os acelerômetros como controladores de jogos; enquanto o acelerômetro pode medir movimento linear, o giroscópio mede a velocidade rotacional (ou movimento rotacional).
Objetivo: Depois de concluir este guia de início rápido você entenderá como usar o giroscópio para detectar mudanças na velocidade de rotação. Você pode usar isso para determinar a velocidade de giro do dispositivo de um usuário, para influenciar o movimento de personagens dentro de um jogo, por exemplo.
Pré-requisitos
Você deve estar familiarizado com HTML, JavaScript e eventos.
O dispositivo ou emulador que você está usando deve ter suporte para um giroscópio.
Tempo para conclusão: 15 minutos.
Instruções
1. Abrir o Microsoft Visual Studio
Abra uma instância do Visual Studio.
2. Criar um novo projeto
Crie um novo projeto, escolhendo um Aplicativo em Branco nos tipos de projetos de Aplicativos JavaScript/Store.
3. Substituir o código JavaScript
Abra o arquivo default.js do projeto e substitua o código existente pelo seguinte.
// For an introduction to the Blank template, see the following documentation:
// https://go.microsoft.com/fwlink/p/?linkid=232509
(function () {
"use strict";
var gyrometer;
function id(elementId) {
return document.getElementById(elementId);
}
function onDataChanged(e) {
var reading = e.reading;
id('txtXVelocity').innerHTML = reading.angularVelocityX.toFixed(2);
id('txtYVelocity').innerHTML = reading.angularVelocityY.toFixed(2);
id('txtZVelocity').innerHTML = reading.angularVelocityZ.toFixed(2);
}
var app = WinJS.Application;
// This function responds to all app activations.
app.onactivated = function (eventObject) {
if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
gyrometer = Windows.Devices.Sensors.Gyrometer.getDefault();
// Choose a report interval supported by the sensor
var minimumReportInterval = gyrometer.minimumReportInterval;
var reportInterval = minimumReportInterval > 16 ? minimumReportInterval : 16;
gyrometer.reportInterval = reportInterval;
// Set the event handler
gyrometer.addEventListener("readingchanged", onDataChanged);
WinJS.UI.processAll();
}
};
app.start();
})();
4. Adicionar o HTML para os aplicativos
Abra o arquivo default.html dos projetos do Windows e do Windows Phone e copie o seguinte HTML para dentro das marcas BODY do arquivo.
<div class="item" id="scenario1Output">
X: <a id="txtXVelocity">no data</a>
<br />
Y: <a id="txtYVelocity">no data</a>
<br />
Z: <a id="txtZVelocity">no data</a>
<br />
</div>
5. Criar, implantar e executar o aplicativo
Pressione F5 ou selecione Depurar > Iniciar Depuração) para criar, implantar e executar o aplicativo.
Quando o arquivo está executando, você pode alterar os valores do acelerômetro movendo o dispositivo ou usando as ferramentas do emulador.
6. Parar o aplicativo
- Pressione Alt+Tab para retornar ao Visual Studio.
- Pressione Shift-F5 ou selecione Depurar > Parar Depuração) para parar o aplicativo.
Resumo e próximas etapas
O exemplo anterior demonstra quão pouco código você precisará para escrever a fim de integrar a entrada do giroscópio em seu aplicativo.
O aplicativo estabelece uma conexão com o giroscópio padrão na função onactivated. Isso ocorre na seguinte linha:
gyrometer = Windows.Devices.Sensors.Gyrometer.getDefault();
Os novos dados do giroscópio são capturados na função onDataChanged. Cada vez que o driver do sensor receber novos dados do sensor, ele passa os valores para o seu aplicativo usando esta função (ou manipulador de eventos). O aplicativo registra este manipulador de eventos na seguinte linha:
gyrometer.addEventListener("readingchanged", onDataChanged);
Esses novos valores são gravados na tela por meio de atualizações nos elementos DOM mostrados a seguir.
<div class="item" id="scenario1Output">
X: <a id="txtXVelocity">no data</a>
<br />
Y: <a id="txtYVelocity">no data</a>
<br />
Z: <a id="txtZVelocity">no data</a>
<br />
</div>
O aplicativo estabelece o intervalo de relatório dentro da função onactivated. Este código recupera o intervalo mínimo suportado pelo dispositivo e o compara com um intervalo solicitado de 16 milissegundos (aproximadamente a uma taxa de atualização de 60-Hz). Se o intervalo mínimo suportado for maior que o intervalo solicitado, o código definirá valor mínimo. Caso contrário, ele define o valor como o intervalo solicitado.
var minimumReportInterval = accelerometer.minimumReportInterval;
var reportInterval = minimumReportInterval > 16 ? minimumReportInterval : 16;
accelerometer.reportInterval = reportInterval;
Se você estiver criando um jogo, as próximas etapas podem envolver a combinação da entrada do giroscópio com a entrada do acelerômetro.