GI.ReleaseMouse

From SunFlurry wiki
Jump to: navigation, search
  ReleaseMouse (Общие функции объекта GI)
Объект:Объект GI
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Да

В зависимости от режима захвата мыши MouseMode, функция отображает ранее спрятанный курсор мыши, если захват был выполнен ранее.

Синтаксис

GI.ReleaseMouse()

Примеры

//Событие движения мыши и нажатия на клавиши
Function OnNewInput(aGI,СпУскор,ТипСобытия,Арг1,Арг2,Арг3,Арг4)
  If ТипСобытия=0 Then
    //Движение мыши -- обновить переменные поворота
    //Арг2, Арг3 -- смещение мыши по X и Y относительно окна прорисовки
    If aGI.MouseCaptured Then
      СпУскор[4]:=Арг2-aGI.Width div 2;
      СпУскор[5]:=Арг3-aGI.Height div 2;
    EndIf;
  ElseIf ТипСобытия=1 Then
    //Нажатие мыши на экран, захватить мышь
    aGI.CaptureMouse();
  ElseIf ТипСобытия=11 Then //Клавиша нажата
    If (Арг1=0x57)Or(Арг1=0x26) Then//W или стрелка вперед -- движение по Z
      СпУскор[3]:=1;
    ElseIf (Арг1=0x53)Or(Арг1=0x28) Then//S или стрелка назад -- движение по Z
      СпУскор[3]:=-1;
    ElseIf (Арг1=0x51)Or(Арг1=0x25) Then//Q или стрелка влево -- движение по X
      СпУскор[1]:=-1;
    ElseIf (Арг1=0x45)Or(Арг1=0x27) Then//E или стрелка вправо -- движение по X
      СпУскор[1]:=1;
    ElseIf (Арг1=0x20)Or(Арг1=0x41) Then//A или пробел -- прыжок
      СпУскор[2]:=1;
    ElseIf Арг1=0x1B Then//ESC -- отпустить мышь
      aGI.ReleaseMouse();
    EndIf;
  ElseIf ТипСобытия=12 Then //Клавиша отпущена
    If ((Арг1=0x57)Or(Арг1=0x26))And(СпУскор[3]=1) Then//Отменить движение по Z, если оно было инициировано W
      СпУскор[3]:=0;
    ElseIf ((Арг1=0x53)Or(Арг1=0x28))And(СпУскор[3]=-1) Then//Отменить движение по Z, если оно было инициировано S
      СпУскор[3]:=0;
    ElseIf ((Арг1=0x51)Or(Арг1=0x25))And(СпУскор[1]=-1) Then//Отменить движение по X, если оно было инициировано Q
      СпУскор[1]:=0;
    ElseIf ((Арг1=0x45)Or(Арг1=0x27))And(СпУскор[1]=1) Then//Отменить движение по X, если оно было инициировано E
      СпУскор[1]:=0;
    ElseIf _Or(Арг1=0x20,Арг1=0x41) Then//Отменить прыжок
      СпУскор[2]:=0;
    EndIf;
  ElseIf ТипСобытия=21 Then//Потеря фокуса окном, отпустить мышь
    aGI.ReleaseMouse();
  EndIf;
EndFunction