none
Перехват нажатия клавиш по элементу, Определения положения мыши RRS feed

  • Вопрос

  • Есть ли в xna стандартная функция, которая перехватывает нажатия мышей по определенному элементу, например спрайту, или только определять по месту положения мыши?

    Да и как определить положение мыши относительно приложения xna а не относительно экрана, если приложения не полноэкранное ?

    21 апреля 2011 г. 18:47

Ответы

Все ответы

  • Есть ли в xna стандартная функция, которая перехватывает нажатия мышей по определенному элементу, например спрайту, или только определять по месту положения мыши?

    Наверняка у интересующего Вас элемента есть обработчик нажатия по нему кнопкой мыши. Повесьте на него нужный обработчик и будете делать то что Вам надо при нажатии.
    [My blog] [My E-mail]
    23 апреля 2011 г. 10:25
  • Да и как определить положение мыши относительно приложения xna а не относительно экрана, если приложения не полноэкранное ?

    Вам поможет событие у окна MouseMove

    Вот пример обработчика события, в котором определяется координаты мыши внутри окна:

    private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
          int mouseX = e.X;
          int mouseY = e.Y;
    
          label1.Text = "X = " + mouseX + "; " + "Y = " + mouseY;
        }


    [My blog] [My E-mail]
    23 апреля 2011 г. 10:33
  • Вам поможет событие у окна MouseMove

    Вот пример обработчика события, в котором определяется координаты мыши внутри окна:

     

    private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
      {
       int mouseX = e.X;
       int mouseY = e.Y;
    
       label1.Text = "X = " + mouseX + "; " + "Y = " + mouseY;
      }

     


    [My blog] [My E-mail]



    Xna отличаться от System.Windows.Forms и способы характерные для него не подойдут !!!
    23 апреля 2011 г. 15:20
  • Попробуйте так:

    MouseState mouseStateCurrent = Mouse.GetState();


    [My blog] [My E-mail]
    23 апреля 2011 г. 15:24
  • Попробуйте так:

    MouseState mouseStateCurrent = Mouse.GetState();


    [My blog] [My E-mail]
    Я так и делаю но приложение не полноэкранное а метод описанный выше выдает координаты относительно экрана а не приложения ( даже если щелкнем не по приложению все равно получим положения мыши во время щелчка) мне необходимо пересчитать это относительно экрана приложения, загвоздка в том в том что я не знаю как определить положение приложения относительно экрана, и определить был ли щелчок по нему.
    23 апреля 2011 г. 15:36
  • Хм...

    Согласно этому (How to: Get the Current Mouse Position (Windows)) все должно работать.

    Для определения координат окна попробуйте следующее или еще так


    [My blog] [My E-mail]
    • Помечено в качестве ответа NIKkakNIK 23 апреля 2011 г. 20:00
    23 апреля 2011 г. 15:52
  • Для определения координат окна попробуйте следующее или еще так


    [My blog] [My E-mail]

    Да там можно определить координаты xna.

    А как определить был ли щелчок по приложению xna или по окну которое находиться над ним, поскольку координаты у них одинаковые ?

    23 апреля 2011 г. 16:29
  • А как определить был ли щелчок по приложению xna или по окну которое находиться над ним, поскольку координаты у них одинаковые ?

    Не понимаю...У Вас в приложении несколько окон (приложение xna всеравно расположено внутри окна, только своего)? И надо определить внутри какого окна был произведен щелчек мышкой? Так?


    [My blog] [My E-mail]
    23 апреля 2011 г. 18:44
  • я использую xna без добавления его в другую форму а даже наоборот в него добавляю форму wpf (решил поэкспериментировавать) , и я уже нашел как это сделать спасибо за помощь.
    23 апреля 2011 г. 20:00
  • Не за что! =)

    > и я уже нашел как это сделать

    Поделитесь решением. Думаю, может пригодиться.
    [My blog] [My E-mail]
    23 апреля 2011 г. 20:01
  • подводя итоги 

    this.Window.ClientBounds.Location - определения положения

    this.IsActive - определяет активность окна

    24 апреля 2011 г. 20:10