Interação de toque no desenvolvimento do jogo para o Windows Phone 7 Part 1 Toque no básico da interação
Comece com o Windows Phone 7
Plataforma de aplicativos Do Windows Phone 7
O ambiente de desenvolvimento do Windows Phone 7 foi lançado oficialmente em setembro de 2010, e os smartphones que realmente executam o Windows Phone 7 começaram a chegar ao mercado.
Figura 1: Troféu HTC 7 com Windows Phone 7 vendido pela HTC
Quando você cria um aplicativo que é executado no Windows Phone 7, você pode escolher entre "Silverlight" e "XNA Framework" como a estrutura do programa. Em geral, você usará "XNA Framework" para desenvolvimento de jogos e "Silverlight" para outras aplicações, como ferramentas.
Esta seção usa o XNA Framework para desenvolvimento de jogos e explica como usar o painel de toque, que será a interface de usuário mais usada para o Windows Phone 7. O uso simples é descrito na ajuda do XNA Game Studio, então eu gostaria de explicá-lo de uma forma um pouco mais aprofundada aqui.
Prepare seu ambiente de desenvolvimento
Esta seção é da perspectiva de alguém que até tocou ligeiramente o XNA Game Studio, então vou omitir instruções detalhadas, como instalação e configuração. Há muita informação na ajuda que vem com o XNA Game Studio e na web, então por favor, confira você mesmo. Eu também tenho alguns no meu site (http://sorceryforce.com/xna/).
- Ferramentas do desenvolvedor do Windows Phone
- Zune Software
- Um dispositivo real executando o Windows Phone 7 ou um ambiente multi-touch do Windows 7
- Aplicativo de registro de desenvolvedor do Windows Phone
Figura 2: Microsoft Visual Studio 2010 Express for Windows Phone (incluído nas ferramentas do desenvolvedor do Windows Phone)
Figura 3: Emulador de Windows Phone
Programação! - 1. Obter informações sobre toque
Sobre esta amostra
A versão do XNA Framework usado no Windows Phone 7 é "4.0", mas até então não havia classes para painéis de toque, e teclados, mouses e gamepads eram o mainstream. Desde o 4.0, o Windows Phone 7 tem sido suportado, e uma nova classe dedicada a painéis de toque foi adicionada.
Neste artigo, explicaremos principalmente essa classe, mas na verdade, se você quiser obter informações simples de posição de toque, você pode substituir outra classe sem usar uma classe para painéis de toque. É a aula de "Mouse". Nesta amostra, usaremos a classe Mouse para obter informações de toque.
Metas deste programa amostral
Quando você toca na tela, a imagem (sprite) é colocada de acordo com a posição de toque.
Figura 3,4: Sprites aparecem em posições tocadas
Programa - Campos Declarando
Eu gostaria de explicar isso junto com o programa de amostra imediatamente. Explicações de peças que não estão diretamente relacionadas à operação de toque e programas criados desde o início são omitidas, por isso consulte o código-fonte distribuído separadamente.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
<summary>
テクスチャー
</summary>
Texture2D texture;
<summary>
タッチしている位置
</summary>
Vector2 touchPosition;
public Game1()
{
O campo declara uma textura para desenhar no local do toque e uma variável de estrutura vector2 para armazenar a posição de toque.
Programa - Texturas de carregamento
Texturas já são adicionadas ao projeto de conteúdo e carregadas com o método LoadContent. Uma vez que o conteúdo não está diretamente relacionado a painéis de toque, explicações detalhadas são omitidas.
Figura 6: Adicione uma textura.png ao seu projeto de conteúdo
Figura 7: Imagem usada nesta amostra
protected override void LoadContent()
{
// 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
spriteBatch = new SpriteBatch(GraphicsDevice);
// テクスチャーをコンテンツパイプラインから読み込む
texture = Content.Load<Texture2D>("Texture");
}
Programa - Aquisição de Informações de Toque
As informações de toque são recuperadas no método Game.Update.
Estou recebendo as informações de toque usando a classe "Mouse" em vez de de uma classe dedicada. Ao usar o método "Mouse.GetState", o estado atual do mouse é devolvido na estrutura "MouseState", para que você possa obter a posição de toque das propriedades "MouseState.X" e "MouseState.Y".
protected override void Update(GameTime gameTime)
{
// ゲームの終了条件をチェックします。
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// マウスの状態を取得(ここではタッチパネルの簡易的な情報)
MouseState mouseState = Mouse.GetState();
// タッチしている位置を設定
touchPosition = new Vector2(mouseState.X, mouseState.Y);
base.Update(gameTime);
}
Uma coisa a notar sobre o uso da classe Mouse para obter informações de toque é que ele só retorna informações simples. As únicas restrições às informações que podem ser obtidas ao usar a classe Mouse são "somente toque único", "posição de toque (MouseState.X, propriedade MouseState.Y)" e "se deve ou não tocar (MouseState.LeftButton)". Ele não suporta multi-toque ou gestos. Além disso, se você conseguir uma posição quando você não tocou nela, ela continuará a retornar a posição de toque anterior. Uma vez que as informações de entrada não podem ser recebidas a menos que sejam tocadas, as informações de localização não podem ser adquiridas, como mouseover por mouse.
Programa - Desenho texturas
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
spriteBatch.Begin();
// タッチしている位置にテクスチャーを描画
spriteBatch.Draw(texture, touchPosition, Color.White);
// スプライトの一括描画
spriteBatch.End();
base.Draw(gameTime);
}
Resumo desta amostra
Uma vez que a classe Mouse substitui a aquisição de informações de toque, as informações só podem ser obtidas obtendo a posição de toque como nesta amostra. Por outro lado, se você usar uma aula somente para toque, você pode obter mais informações.
Portanto, não é sem mérito obter informações de toque usando a classe Mouse. O uso da classe Mouse oferece os seguintes benefícios:
- Pode compartilhar código com jogos habilitados para mouse em execução no Windows
- Informações de localização de toque podem ser escritas com a menor quantidade de código
- O processamento desnecessário pode ser omitido
Se você usar apenas um toque único e apenas posicionamento de toque, você pode aproveitar os benefícios acima usando a classe Mouse.