Interação de toque no desenvolvimento do jogo para o Windows Phone 7 Part 1 Toque no básico da interação

Página atualizada :
Data de criação de página :

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.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
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/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Figura 2: Microsoft Visual Studio 2010 Express for Windows Phone (incluído nas ferramentas do desenvolvedor do Windows Phone)

図 3 :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.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
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.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Figura 6: Adicione uma textura.png ao seu projeto de conteúdo

図 7 :今回サンプルで使用する画像
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.