purebasic.info

PureBasic forum
Текущее время: Вс июл 22, 2018 11:32 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Работа с мышью
СообщениеДобавлено: Вт авг 05, 2014 11:33 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2282
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Я не знаю что это, может баг, а может и нет, но тем не менее, раздел выбрал именно этот.

Прошу проверить вас следующий код (выход по ALT + F4):
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
EnableExplicit
 
Enumeration
  #window
  #sprite_one
  #sprite_two
EndEnumeration
 
#w = 800
#h = 600
 
#title = "PureBasic Mouse"
 
If InitSprite() And
  InitMouse() And
  OpenWindow(#window, #PB_Ignore, #PB_Ignore, #w, #h, #title, #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And
  OpenWindowedScreen(WindowID(#window), 0, 0, #w, #h) And
  LoadSprite(#sprite_one, #PB_Compiler_Home + "examples/sources/Data/Drive.bmp") And
  LoadSprite(#sprite_two, #PB_Compiler_Home + "examples/sources/Data/File.bmp")
 
  SetFrameRate(60)
 
  Define x.i, y.i
 
  Repeat
    FlipBuffers()
    ClearScreen(RGB(0,0,0))
   
    If ExamineMouse()
      x = MouseX()
      y = MouseY()
    EndIf
    DisplaySprite(#sprite_one, x, y)
   
    DisplayTransparentSprite(#sprite_two, WindowMouseX(#window), WindowMouseY(#window), 128)
   
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
EndIf


Смысл:
В Screen'е есть два спрайта. Первый рисуется по координатам MouseX/Y(), второй — по WindowMouseX/Y().
В идеале, когда перемещается курсор мыши, мы видим как по screen'у перемещается один объект (два в одном).

Но у меня, когда я работаю мышью, первый спрайт часто "застревает", это можно увидеть на видео:
http://www.youtube.com/watch?v=kM9lqxhLWQU
(смотрите в 720p качестве)

Следовательно работа с мышью с использованием ExamineMouse() невозможна. Я точно также не могу нормально "играть" в стандартные 3D примеры, которые идут с PureBasic'ом. И конечно же в игру AndyLy.

_________________
EnableExplicit User


Последний раз редактировалось qpAHToMAS Вт авг 05, 2014 11:40 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Вт авг 05, 2014 11:38 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11208
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Все работает как надо.
А вот выход в проге реализован криво. Библиотека Mouse захватываем мышь и окно просто так не закрыть. Выход нужно делать по Esc.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Вт авг 05, 2014 11:40 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2282
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Пётр писал(а):
Все работает как надо.
А вот выход в проге реализован криво. Библиотека Mouse захватываем мышь и окно просто так не закрыть. Выход нужно делать по Esc.

Специально не стал громоздить лишний код для выхода, ведь есть ALT + F4, ALT + TAB и т.п. :).

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 4:20 am 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 232
Благодарил (а): 31 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
Дружище, в твоем примере застревает на WaitWindowEvent()
(это блокирующая функция, в данном случае надо юзать WindowEvent())


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 9:03 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
У меня всё нормально

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 1:06 pm 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 162
Благодарил (а): 90 раз.
Поблагодарили: 3 раз.
Пункты репутации: 0
попробуйте скомпилировать в версии 5.20 и ниже.. Работает?!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 2:21 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2282
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Kuzmat писал(а):
Дружище, в твоем примере застревает на WaitWindowEvent()
(это блокирующая функция, в данном случае надо юзать WindowEvent())

Без разницы.

bizdon писал(а):
попробуйте скомпилировать в версии 5.20 и ниже.. Работает?!

5.20 нету. Попробовал на 5.21 — тоже самое.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 2:33 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2282
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
На оф. форуме один юзер столкнулся с такой же проблемой и указал конкретно в чем причина:
В FlipMode параметре у OpenWindowedScreen(). Если использовать #PB_Screen_NoSynchronization, то баг исчезает.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 3:15 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 717
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Если мою игру еще не снес- проверь
в файле data\andgine3d.cfg
в строчке
synchronization_mode=wait
поставь
synchronization_mode=none

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 3:35 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6327
Благодарил (а): 19 раз.
Поблагодарили: 189 раз.
Пункты репутации: 48
qpAHToMAS писал(а):
На оф. форуме один юзер столкнулся с такой же проблемой и указал конкретно в чем причина:
В FlipMode параметре у OpenWindowedScreen(). Если использовать #PB_Screen_NoSynchronization, то баг исчезает.

Интересно бы узнать твою кратенькую характеристику компа, то как ОС, процессор и видеокарту?
Чтобы знать на будущее, у кого могут быть проблемы.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 5:08 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2282
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
AndyLy писал(а):
Если мою игру еще не снес- проверь
в файле data\andgine3d.cfg
в строчке
synchronization_mode=wait
поставь
synchronization_mode=none

Странно, но не помогло @_@.

kvitaliy писал(а):
qpAHToMAS писал(а):
На оф. форуме один юзер столкнулся с такой же проблемой и указал конкретно в чем причина:
В FlipMode параметре у OpenWindowedScreen(). Если использовать #PB_Screen_NoSynchronization, то баг исчезает.

Интересно бы узнать твою кратенькую характеристику компа, то как ОС, процессор и видеокарту?
Чтобы знать на будущее, у кого могут быть проблемы.

Ноутбук Lenovo G580:
Windows 7 (x86)
Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz
Intel HD Graphics 4000 & NVIDIA GeForce 610M (пробовал запускать и проверять на обеих)

Но меня больше всего удивляет то, что баг проявляется только когда я использую мышь, а не тачпад. Различает же как-то @_@.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с мышью
СообщениеДобавлено: Ср авг 06, 2014 8:52 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6327
Благодарил (а): 19 раз.
Поблагодарили: 189 раз.
Пункты репутации: 48
qpAHToMAS писал(а):
Но меня больше всего удивляет то, что баг проявляется только когда я использую мышь, а не тачпад. Различает же как-то @_@.

Ну да, сам не разбирался, но про эту траблу знаю. Племянник в последнее время в игрушки вдарился, ну и тоже приходил ко мне с этим косяком - мышка в ноутбуке тормозит, а тачпад нормально работает. Вначале подумал, что из за беспроводной мышки, потом менял на проводную, тот же глюк. Пришел на моем ноуте проверять - то же самое под Win8. А вот на моем старом ноуте на Пентиуме 4, который под winXP и ему уже лет 10 (!), работает БЕЗ ГЛЮКОВ с мышкой!
В общем, как он проблему решил не знаю, он до конца августа в отпуске, но приедет спрошу.

_________________
read-only


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB