Показать сообщение отдельно
Старый 07.10.2009, 09:07   #27
DUTS
Долгожитель
 
Аватар для DUTS
Доп. информация
По умолчанию Как написать свой первый универсальный скин. Урок 6.

Переходим к пользовательским меню.
В нашем примере, как и оговорено в @index.ini, их будет четыре: @menu1.ini, @menu2.ini, @menu3.ini и @menu4.ini. И расположены они будут в том же каталоге, что и @index.ini.
Я остановлюсь только на двух из них, т.к. создание остальных совершенно аналогично и зависит только от вашей фантазии. Пусть это будет @menu1.ini - сюда мы поместим стрелочные часы и пару кнопок, а также @menu2.ini - обзор исполняемого содержимого флэшки.

Но пока мы не перешли к пользовательским меню, нужно сделать еще одну важную вещь: надо определить хоть один шрифт. Одним из важнейших принципов DUTSlaunch является решение проблемы с нерусифицированными навигаторами, что решается в данном случае использованием растровых шрифтов, определенных в соответствующих bmp-файлах.
Шрифт(-ы) лучше определить в @index.ini, что мы и сделаем:
Код:
# основные параметры
[MAIN]
key2run=>SETUP_PRINT_SCREEN
bmp=Shell\back.bmp
method=stretch

# определим шрифт
fontname=System
fontfile=Shell\sys9x12.bmp
alphabet=0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz., %:-

# верхняя полоска с синим фоном
[BLOCK]
  position=TL
  [BITMAP]
  bmp=Shell\back_up.bmp
  left=0+
  top=0
  transparent=no
[ENDBLOCK]
В данном примере я предлагаю воспользоваться одним из моих шрифтов (здесь - sys9x12.bmp). Параметр alphabet задает строгое соответствие нарисованных начертаний конкретному символу. Ну а имя fontname естественно может быть любым, в уроках я буду использовать System, как здесь и определено.

В этом уроке создадим @menu1.ini

Вначале зададим кнопки.
Первая кнопка будет отвечать за выключение навигатора и будет располагаться где-то в верхнем левом углу:
Код:
[BLOCK]
  position=TL
  [BUTTON]
  bmp=Shell\knopkaOff.bmp
  left=0
  top=16
  action=>SETUP_OFF
  transcolor=$000000
  shift=1
  width=60
  height=40
[ENDBLOCK]
Размер картинки knopkaOff.bmp - 60 x 30. Для того, чтобы исключить "промахивание" при нажатии, можно сделать область чувствительности к нажатию чуть больше, в приведенном примере это задано через height=40. Ну а в параметре action мы указали внутреннюю команду "Выключить навигатор". Полный список команд приведен в [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
Аналогично определим и вторую кнопку, отвечающую за выход из оболочки, уже где-то в правом углу, не забыв сделать отступ от края, равный ширине картинке (у нас здесь это 60):
Код:
[BLOCK]
  position=TR
  [BUTTON]
  bmp=Shell\knopkaExit.bmp
  left=60
  top=16
  action=>SETUP_EXIT
  transcolor=$000000
  shift=1
  width=60
  height=40
[ENDBLOCK]
Ну и теперь украсим полученный результат "изюминкой". В прилагаемом ниже архиве есть файл clock.dll. Это т.н. "плагин", который в данном случае делает только одно - выводит стрелки аналоговых часов.
Мы хотим вывести их в центр пользовательской области, а не в центр экрана (что было бы очень некрасиво и криво). Значит надо ее указать, можно сразу после элемента [MAIN], можно перед ним:
Код:
[USER]
left=0
top=15
right=-0
bottom=-55
Эти цифры мы определили ещё на этапе эскиза.

Теперь где-то после кнопок укажем следующее:
Код:
[BLOCK]
  position=UCM
  [BITMAP]
  bmp=shell\clock.bmp
  top=-84
  left=-85
  transcolor=$000001
  [PLUGIN]
  name=clock.dll
  left=0
  top=0
  params=R:80,RC:5,C1:$0000FF,C2:$0000FF,C3:$0000FF,S:0
  visible=yes
  enabled=yes	
[ENDBLOCK]
Здесь: мы определили фоновую картинку часов (clock.bmp), ее расположение относительно центра (User's Center-Middle) пользовательской области и то, что фон у неё будет прозрачный и эта прозрачность будет определена цветом в точке (0,0) данной картинки (transcolor=$000001). В случае использования другой картинки не забывайте корректировать left и top.
В плагин передаются параметры, заданные в строке params, строка эта произвольная и её вид определяется исключительно потребностью того или иного плагина. В данном случае передаются: радиус часов, радиус центра (=0, чтобы стрелки из одной точки расходились) и цвета стрелок. Параметр S - 1, если нужно нарисовать временную сетку, или 0, если не нужно её рисовать (как в данном примере, ведь она уже нарисована на самой картинке).

Файл @menu1.ini успешно создан

Ну а рядышком исходный эскиз
Изображения
Тип файла: jpg les_06_1.jpg (6.7 Кб, 25 просмотров)
Тип файла: jpg les_06_2.jpg (15.9 Кб, 26 просмотров)
Тип файла: jpg les_06_3.jpg (14.5 Кб, 34 просмотров)
Тип файла: png les_01_4.png (13.0 Кб, 18 просмотров)
Вложения
Тип файла: rar les06.rar (57.8 Кб, 33 просмотров)
__________________
Прежде чем написать критическое замечание, прочтите прилагаемые описания...
DUTS вне форума  
2 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.03140 секунды с 12 запросами