0

私はWindowsPhone7でArkanoid(Breakout)ゲームを開発しています。

GamePageコンストラクターのベースにハンドラーを追加しました。

public GamePage()
    {
        InitializeComponent();

        // Get the content manager from the application
        contentManager = (Application.Current as App).Content;

        // Create a timer for this page
        timer = new GameTimer();
        timer.UpdateInterval = TimeSpan.FromTicks(333333);
        timer.Update += OnUpdate;
        timer.Draw += OnDraw;

        base.OnMouseMove += new MouseEventHandler(GamePage_MouseMove);

        init();
    }

そしてこれは処理機能です:

private void GamePage_MouseMove(object sender, MouseEventArgs e)
    {
        //this changes the ball coordinates based on yVel and xVel properties of the ball
        ball.moveBall();
    }

GamePage_MouseMove関数が呼び出されることはなく、その理由はわかりません。ボールが動いていない。

もう1つの問題は、onUpdate関数です。

private void OnUpdate(object sender, GameTimerEventArgs e)
    {
        //if the ball rectangle intersects with the paddle rectange, change the ball yVel
        if (ball.BallRec.Intersects(paddle.PaddleRec))
            ball.YVel = -1;
        ball.moveBall();
    }

ボールがパドルと交差しても、元の方向に移動し続け、「バウンド」しません。

助けてください。

アップデート

小さな変更の後、onUpdate関数は次のようになります。

private void OnUpdate(object sender, GameTimerEventArgs e)
    {
        MouseState ms = Mouse.GetState();
        if(ms.LeftButton == ButtonState.Pressed)
            paddle.movePaddle((int)ms.X);
    }

しかし、パドルは動いていません。

4

1 に答える 1

0

マウスイベントをキャプチャしようとするのではなく、更新中に MouseState構造を検査することを検討する必要があります。

次のようなもの:

protected override void Update(GameTime gameTime)
{
  // snip...

  MouseState mouseState = Mouse.GetState();

  //Respond to the position of the mouse.
  //For example, change the position of a sprite 
  //based on mouseState.X or mouseState.Y

  //Respond to the left mouse button being pressed
  if (mouseState.LeftButton == ButtonState.Pressed)
  {
    //The left mouse button is pressed. 
  }

  base.Update(gameTime);
}

ドキュメントには、入力デバイスとしてマウスを使用する方法の優れた例があります:http: //msdn.microsoft.com/en-us/library/bb197572.aspx

さらに、電話の場合は、真のタッチ機能と加速度計を利用できることを忘れないでください。ここですべての入力オプションについて学ぶことができます:http://msdn.microsoft.com/en-us/library/bb203899.aspx

于 2012-12-08T16:10:12.707 に答える