Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 03.11.2009, 09:29   #1
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Lib_displaysize - ширина и высота дисплея в текущий момент

Библиотека позволяет узнать ширину и высоту дисплея в пикселях в данный момент времени.

Стандартные функции getWidth и getHeight всегда возвращают те размеры, которые были при запуске приложения. Но ширина с высотой могут меняться в процессе работы мидлета.
На некоторых телефонах, в частности, смартфонах nokia: n82, 5800, n97, n95 8gb, e66 и многих других - происходит автоматический поворот экрана при повороте самого телефона. Т.е. ширина "меняется" с высотой. Но при использовании getWidth и getHeight мидлет не знает об этом и продолжает выводить информацию за пределы экрана, а часть экрана наоборот начинает пустовать.
Могут быть и другие случаи, когда размеры изменяются.
Всё это будет учитываться при использовании функций библиотеки.

Библиотека содержит 4 функции:
init - инициализация библиотеки. Нужно вызывать перед использованием других функций. Лучше - сразу после запуска мидлета.
integer lastwidth - возвращает текущую ширину в пикселях.
integer lastheight - возвращает текущую высоту в пикселях.
integer is_resized - проверяет, изменилась ли ширина или высота с момента последнего вызова is_resized(или запуска мидлета). Если какой-либо размер изменился - вернёт 1. Иначе вернёт 0.

Пример использования библиотеки:
Program testsize;
Uses displaysize;
Begin
	displaysize.init;    
	repeat
    setColor(255,255,255);
    FillRect(0, 0, lastwidth, lastheight); 
    setColor(0,0,0);
		DrawText('w '+lastwidth,20,20);
		DrawText('h '+lastheight,20,60);
		DrawRect(15,15,lastwidth-30,lastheight-30);
		if is_resized=1 then
		begin
			DrawText('Размеры изменились,ждём 2 сек',20,100);
			Repaint;
			delay(2000);
		end;		
		delay(100);
    Repaint;
  until false;
End.
В приложении сама библиотека, её исходный код и проект с примером использования.
Вложения
Тип файла: zip Lib_displaysize.zip (2.1 Кб, 559 просмотров)
Тип файла: zip source-Lib_displaysize.zip (546 байт, 502 просмотров)
Тип файла: zip example.zip (7.3 Кб, 500 просмотров)
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо Bruteo за это полезное сообщение:
AVL (03.02.2011), odd (03.11.2009), Phantom (11.11.2009), Sk.MaCh (06.11.2009), Skythrone (03.11.2009)
Старый 03.11.2009, 14:58   #2
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Как раз бьюсь над проблемой разрешения экрана в 5800. Спасибо.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Phantom (11.11.2009)
Старый 11.11.2009, 14:51   #3
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Странно. Потестил либу, используя приведённый автором пример. Либа реагирует на поворот экрана, но размер экрана всё равно выдаёт некорректный, а именно 320x360 или 360x320.

А реально разрешение экрана на 5800 значительно больше.
(Offline)
 
Ответить с цитированием
Старый 11.11.2009, 16:30   #4
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Сообщение от Skythrone Посмотреть сообщение
Странно. Потестил либу, используя приведённый автором пример. Либа реагирует на поворот экрана, но размер экрана всё равно выдаёт некорректный, а именно 320x360 или 360x320.

А реально разрешение экрана на 5800 значительно больше.
Для nokia 5800, N97 и других смартфонов на базе S60 5-го издания нужно отключать экранную клавиатуру. Это можно сделать через диспетчер приложений или добавив строку
Nokia-MIDlet-On-Screen-Keypad: no
В файл manifest.mf или jad-файл получаемые при компиляции мидлета.
Потому что эта экранная клавиатура и отъедает пространство на экране.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Bruteo за это полезное сообщение:
GRAY_WOLF (13.04.2010), Phantom (11.11.2009), Romanzes (28.09.2010), xmoonlight (15.09.2011)
Старый 11.11.2009, 16:54   #5
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Новая версия библиотеки
Не используйте библиотеку из первого сообщения в этой теме

Обновил либу. Немного изменился принцип работы. Теперь функции lastwidth и lastheight возвращают не текущие размеры экрана, а размеры, которые были во время последнего выполнения функции is_resized или запуска мидлета(т.е. выполнения функции init - не забывайте о ней).

Кроме того, is_resized реагирует на изменение размеров с задержкой в 200 миллисекунд. Это сделано из-за того, что "перестроение" экрана при изменении его размеров происходит не мгновенно, а может происходить, так сказать, "рывками". Небольшая задержка избавит от связанных с этим проблем. Функция не тормозит работу программы - она просто говорит, что размеры не изменились, если после изменения прошло меньше 200 миллисекунд.

Обновлённые файлы в приложении к этому сообщению: библиотека, её исходный код и пример.
В скомпилированном jar файле в архиве с примером уже отключена экранная клавиатура на Nokia 5800, N97 и других смартфонов на базе S60 5-го издания.
Вложения
Тип файла: zip Lib_displaysize.zip (2.5 Кб, 500 просмотров)
Тип файла: zip source-Lib_displaysize.zip (596 байт, 534 просмотров)
Тип файла: zip example.zip (7.4 Кб, 504 просмотров)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Bruteo за это полезное сообщение:
GRAY_WOLF (13.04.2010), Phantom (11.11.2009)
Старый 11.11.2009, 18:29   #6
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Так как являюсь обладателем девайса 5800 и как раз подумывал о реализации подобного, но руки пока не доходили, то очень полезно =) Если бы можно было, нажал бы пять раз на кнопку Полезно!
(Offline)
 
Ответить с цитированием
Старый 11.11.2009, 22:26   #7
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Библиотека может конфликтовать с другими библиотеками, в которых происходит переинициализация дисплея. Например, с lib_game или lib_sensor2.

Проблема решается скрещиванием библиотек.
Если вы не можете сделать это самостоятельно - обратитесь к автору конфликтующей библиотеки или ко мне.

Во вложении прикладываю Lib_sensordisplaysize - результат скрещевания lib_displaysize с некоторыми функциями lib_game(или lib_sensor2). А именно - функции для работы с сенсорным дисплеем:
integer pointer_pressed_x; - возвращает координату касания экрана по x
integer pointer_pressed_y; - возвращает координату касания экрана по y
integer clear_results; - сбрасывает данные о касании экрана

Исходный код прилагаю.
Вложения
Тип файла: zip Lib_sensordisplaysize.zip (1.2 Кб, 503 просмотров)
Тип файла: zip source-Lib_sensordisplaysize.zip (718 байт, 492 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Skythrone (11.11.2009)
Старый 11.11.2009, 23:57   #8
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Как раз сегодня боролся с глюками при инициализации сенсора (lib_sensor2) После танцев с бубном удалось победить, но я обязательно потестирую твою новую либу.
(Offline)
 
Ответить с цитированием
Старый 12.11.2009, 00:21   #9
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Bruteo, а можно ли ещё добавить pointer_released_x и pointer_released_y ?
(Offline)
 
Ответить с цитированием
Старый 12.11.2009, 13:15   #10
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Вот какая тема интересная.
Я тоже скрещивал библиотеки sensor + rc + displaysize + поворот джойстика.
(Offline)
 
Ответить с цитированием
Старый 13.11.2009, 06:15   #11
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Сообщение от Skythrone Посмотреть сообщение
Bruteo, а можно ли ещё добавить pointer_released_x и pointer_released_y ?
В приложении Lib_displaysize + Lib_sensor2.
Вложения
Тип файла: zip Lib_sensor2displaysize.zip (1.6 Кб, 534 просмотров)
Тип файла: zip source-Lib_sensor2displaysize.zip (921 байт, 573 просмотров)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Bruteo за это полезное сообщение:
Phantom (15.11.2009), Skythrone (13.11.2009)
Старый 15.11.2009, 03:04   #12
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Кстати, для 5800 помимо параметра Nokia-MIDlet-On-Screen-Keypad: no
Можно ещё использовать такие параметры:

Nokia-MIDlet-On-Screen-Keypad: gameactions
Nokia-MIDlet-On-Screen-Keypad: navigationkeys


В зависимости от того, какой тип экранного джойстика мы хотим увидеть.
Также довольно интересные результаты дают параметры:

Nokia-MIDlet-Original-Display-Size: 240,320
Nokia-MIDlet-Target-Display-Size: 360,640

и
Nokia-MIDlet-Original-Display-Size: 240,320
Nokia-MIDlet-Target-Display-Size: 360,480

А ещё стоит попробовать:

Nokia-MIDlet-Category: Game
Nokia-MIDlet-App-Orientation: landscape
(или portrait)

Параметр
Nokia-MIDlet-Canvas-Scaling-Orientation-Switch: false
по-идее должен отключить возможность автоматического поворота экрана.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
Phantom (15.11.2009), WISHMASTER35 (04.12.2010)
Старый 21.11.2009, 06:00   #13
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Начал использовать либу в fncalc. Можно посмотреть на результат применения библиотеки в реальном приложении:
http://frolov.net/ru/fncalc/
(Offline)
 
Ответить с цитированием
Старый 12.04.2010, 19:53   #14
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

На телефонах типа LG KP500 и Samsung Star (S5230) для включения полноэкранного режима в манифест нужно добавлять такие строки:

MIDlet-Touch-Support: True
UseNativeTextButtons: false
ReverseSoftkeys: true
UseNativeCommands: false
LGE-MIDlet-TargetLCD-Height: 400
LGE-MIDlet-TargetLCD-Width: 240

Хотя сенсорные Nokia (5800) могут вообще не запускать программу с таким манифестом. Там полноэкранный режим включается как описано выше в этой ветке форума.
Я для Nokia обычно применяю такой манифест:

Nokia-MIDlet-No-Exit: true
Nokia-MIDlet-Category: Game
Nokia-MIDlet-On-Screen-Keypad: no
Nokia-MIDlet-App-Orientation: portrait
Nokia-MIDlet-Canvas-Scaling-Orientation-Switch: false
(Offline)
 
Ответить с цитированием
Старый 12.04.2010, 21:34   #15
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Радость Ответ: Lib_displaysize - ширина и высота дисплея в текущий момент

Сообщение от odd Посмотреть сообщение
На телефонах типа LG KP500 и Samsung Star (S5230) для включения полноэкранного режима в манифест нужно добавлять такие строки:

MIDlet-Touch-Support: True
UseNativeTextButtons: false
ReverseSoftkeys: true
UseNativeCommands: false
LGE-MIDlet-TargetLCD-Height: 400
LGE-MIDlet-TargetLCD-Width: 240

Хотя сенсорные Nokia (5800) могут вообще не запускать программу с таким манифестом. Там полноэкранный режим включается как описано выше в этой ветке форума.
Я для Nokia обычно применяю такой манифест:

Nokia-MIDlet-No-Exit: true
Nokia-MIDlet-Category: Game
Nokia-MIDlet-On-Screen-Keypad: no
Nokia-MIDlet-App-Orientation: portrait
Nokia-MIDlet-Canvas-Scaling-Orientation-Switch: false
А мне то же самое можно только для Sony Ericsson Vivaz Принимаю поздравления с удачной покупкой. Писать в личку, дабы не флудить на форуме.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...

Последний раз редактировалось GRAY_WOLF, 12.04.2010 в 22:49. Причина: Писать в личку
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить, какова высота меша? ABTOMAT 3D-программирование 6 30.11.2007 20:54
Без названия (на данный момент) ZanoZa Проекты на Blitz3D 13 28.12.2005 15:07


Часовой пояс GMT +4, время: 12:44.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com