Тема: Исходница
Показать сообщение отдельно
Старый 29.06.2010, 18:50   #7
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Исходница

Мышь.
Все знают, что в интерфейсе Windows (да и не только) срабатывание щелчка по кнопке срабатывает в момент отпускания клавиши мыши.
Вот скромная реализация подобного на Blitz3D:

Dim IMMouseUP  (3)
Dim IMMouseDown(3)
Dim IMMouseHit (3)

Function 
IMUpdate()
    
Local i
    
For i=1 To 3
        IMMouseUP
)   = IMMouseDown)
        
IMMouseHit)  = (MouseHit) > 0)
        
IMMouseDown) = MouseDown)
    
        If(
IMMouseUP) = True And IMMouseDown) = False)
            
IMMouseUP) = True
        
Else
            
IMMouseUP) = False
        
EndIf
    
Next
End 
Function 
В начало игрового цикла вставляем IMUpdate().
Приставка IM - Input manager (Менеджер ввода)
Вместо MouseDown пишем IMMouseDown
Вместо IMMouseHit пишем IMMouseHit
И конечно IMMouseUP, которая возвращаят True при отпускании кнопки.

Это решает сразу 2 беды.
1) Нет MouseUP
2) Как вы наверное заметили, при повторном вызывании ф-ции MouseHit или MouseDown в цикле функция возвращает False, хотя при первом вызове True. Чтобы этого избежать приходилось заводить глобальные переменные. Теперь это в прошлом.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
PackegerX (04.09.2011)