Зачем нужна клавиша Scroll Lock и как сделать её полезной
Наверняка вы замечали, что на вашей клавиатуре есть одна кнопка с малопонятным назначением — Scroll Lock. Нажатие на неё зажигает какой-то светодиод над клавишами управления курсором, но в остальном ничего не делает. Зачем она нужна?
Клавиша Scroll Lock присутствует на клавиатурах с самого первого IBM PC, выпущенного в 1981 году. Тогда мышей не было, и курсор в тексте перемещался клавишами. Scroll Lock меняет режимы прокрутки. Когда Scroll Lock отключена, вы можете двигать стрелками курсор, а когда нажата — перематывать весь экран вверх, вниз, вправо и влево.
Современные программы могут сами понять, когда клавишами двигать курсор, а когда прокручивать экран. Поэтому Scroll Lock в основном простаивает без дела. Она может пригождаться в Microsoft Excel, где используется для прокрутки таблиц стрелками, или в Linux — там она может приостановить поток выводимого в консоли текста, чтобы его удобнее было читать.
The Gordunni Scroll
Scroll Lock используется так редко, что может считаться практически бесполезной. Однако ей всё-таки можно найти применение.
Скачайте и установите бесплатное приложение от Microsoft под названием PowerToys. Откройте его в системном трее и найдите раздел Keyboard Manager. Нажмите кнопку Remap Key.
Нажмите на значок плюса и выберите из первого выпадающего меню Scroll Lock. Или щёлкните Type Key и нажмите Scroll Lock на клавиатуре. Во втором выпадающем меню выберите клавишу или действие, которое хотите назначить кнопке Scroll Lock.
Можно, например, отключать или включать звук с её помощью, ставить на паузу музыку, переводить компьютер в спящий режим или обновлять страницу в браузере. Затем нажмите OK, и готово.
- Что такое механическая клавиатура и удобнее ли она для работы и игр
- Почему не работает клавиатура и как это исправить
- Что делать, если тормозит компьютер с Windows
Источник: lifehacker.ru
SLIDER/Scrollbar
Ползунок (Slider) — это фрейм для пользовательского ввода. Это позволяет пользователю выбирать значение между верхним и нижним пределом. Вы можете определить пределы для каждого слайдера по своему усмотрению. Значение Sliders является локальным, и может отличаться для всех игроков.
В fdf по умолчанию существует 2 слайдера mainFrame. EscMenuSliderTemplate и StandardSliderTemplate. Оба файла находятся в формате fdf и не загружаются по умолчанию.
Заглянул я в интернете что пишут про slider. Слайдер — переключатель изображений (или другого контента) работающий автоматически или вручную.
Вы когда-нибудь делали презентацию? там каждая страница — слайд, и на презентации пультом переключали на след страницу. Только здесь в варкрафте ничего такого нет, нет никаких сменяющих изображении (слайдов) наш slider больше напоминает Scrollbar.
Свиток с рунами / The Runed Scroll World of Warcraft Classic
Scrollbar (полоса прокрутки) — аналогично как и в Slider. Только вместо ползунка (Slider) используют bar (полосу) для прокрутки значения.
в реальной жизни можно встретить Scrollbars
Чем отличаются Slider и Scrollbar?
В варкрафте существуют два типа фрейма: SLIDER и SCROLLBAR. Если заглянуть в fdf-files, то они используют одни и те же fdf-функции, между ними нет никаких отличии. Да, мы щас будем думать, что в Slider перемещают ползунок (point), в Scrollbar полосу (bar). Но в варкрафте нет никакой полосы или ползунка, это кнопка button. Более того, у них значок кнопки похож на ползунка, полосы в игре я не видел.
В кнопке можно изменить размеры backdrop кнопки, и перерисовать текстуру хоть в точку, хоть в полосу. В близзард используют эти типы для определенных моментов поведения: для горизонтальных перемещении используется слайдер, чаще всего для настроек. Для прокрутки описания текста, области используют scrollbar, чаще всего используются в вертикальном положении, но можно и в горизонтальных. То есть явных отличии нет.
fdf — функции Slider/Scrollbar
SliderInitialValue
SliderInitialValue integer,
Пример:
SliderInitialValue 2, слайдер стартует с этим значением при его создании
Slider начинает именно с этим значением.
SliderMaxValue
SliderMaxValue integer,
Пример:
SliderMaxValue 100,
По умолчанию 100 — максимальное значение. Максимальное количество выбирается
SliderMinValue
SliderStepSize integer,
Пример:
SliderMinValue 0,
По умолчанию 0. Минимальное число по выбору.
SliderLayoutHorizontal
SliderLayoutHorizontal,
Этот флаг устанавливается горизонтальное положение слайдера
По умолчанию ползунок перемещается слева (минимум) вправо (максимум).
SliderLayoutVertical
SliderLayoutVertical,
Этот флаг устанавливает вертикальное положение слайдера
Ползунок перемещается снизу (мин.) Наверх (макс.)
SliderStepSize
SliderStepSize integer,
Пример:
SliderStepSize 1,
Насколько точно пользователь может выбирать значения.
Переводчик: насколько я понимаю, это значение влияет на шаг смещения. Короче, насколько может сместится ползунок на 1 шаг.
SliderThumbButtonFrame
SliderThumbButtonFrame «FrameName»,
Фрейм BUTTON, используемый для перемещения значения SLIDER / SCROLLBAR.
Переводчик: эта функция указывает на кнопку. Это кнопочка будет являться ползунком/полосой
Пример:
SliderThumbButtonFrame «EscMenuScrollThumbButton»,
Я нашел фрейм в fdf-file, оказывается вешают на кнопку BUTTON
Скопировать в буфер
SliderThumbButtonFrame «EscMenuScrollThumbButton», Frame «BUTTON» «EscMenuScrollThumbButton» < Width 0.016, Height 0.016, ControlBackdrop «EscMenuScrollThumbButtonBackdrop», Frame «BACKDROP» «EscMenuScrollThumbButtonBackdrop» < DecorateFileNames, BackdropBlendAll, BackdropBackground «EscMenuSliderThumbButton», >>
в ui/war3skins.txt нашел эту переменную
EscMenuSliderThumbButton=UIWidgetsEscMenuOrcorc-slider-knob.blp
видимо этот ползунок, где то в настройках игры используется. Там никогда игра не паузится, и картинка не Disabled. Короче, у нвшей кнопки BUTTON нет второй Disabled
Возьмем другой пример:
SliderThumbButtonFrame «EscMenuScrollThumbButton»,
Взято из fdf-file:
Скопировать в буфер
SliderThumbButtonFrame «EscMenuThumbButtonTemplate», Frame «BUTTON» «EscMenuThumbButtonTemplate» < Width 0.016, Height 0.016, ControlBackdrop «EscMenuThumbButtonBackdropTemplate», Frame «BACKDROP» «EscMenuThumbButtonBackdropTemplate» < DecorateFileNames, BackdropBlendAll, BackdropBackground «EscMenuSliderThumbButton», >ControlDisabledBackdrop «EscMenuThumbButtonDisabledBackdrop», Frame «BACKDROP» «EscMenuThumbButtonDisabledBackdrop» < DecorateFileNames, BackdropBlendAll, BackdropBackground «EscMenuSliderDisabledThumbButton», >>
в ui/war3skins.txt нашел переменные:
EscMenuSliderThumbButton=UIWidgetsEscMenuOrcorc-slider-knob.blp
EscMenuSliderDisabledThumbButton=UIWidgetsEscMenuHumanslider-knobdisabled.blp
в пути
UIWidgetsEscMenuHumanslider-knob.blp
ScrollBarDecButtonFrame
ScrollBarDecButtonFrame «FrameName»,
боковой фрейм BUTTON для обработки щелчка Dec.
Пример:
ScrollBarDecButtonFrame «EscMenuScrollBarDecButton»,
в fdf-file найден button-фрейм EscMenuScrollBarDecButton:
Скопировать в буфер
ScrollBarDecButtonFrame «EscMenuScrollBarDecButton», Frame «BUTTON» «EscMenuScrollBarDecButton» < Width 0.015, Height 0.015, ControlBackdrop «EscMenuScrollBarDecButtonBackdrop», Frame «BACKDROP» «EscMenuScrollBarDecButtonBackdrop» < BackdropBackground «UIWidgetsGluesSinglePlayerSkirmish-ScrollBarDownButton.blp», BackdropBlendAll, >>
под UIWidgetsGluesSinglePlayerSkirmish-ScrollBarDownButton.blp
ScrollBarIncButtonFrame
ScrollBarIncButtonFrame «FrameName»,
боковой фрейм BUTTON для обработки щелчка In.
Пример:
ScrollBarIncButtonFrame «StandardScrollBarIncButton»,
в fdf-file найден button-фрейм EscMenuScrollBarDecButton:
Скопировать в буфер
ScrollBarIncButtonFrame «StandardScrollBarIncButton», Frame «BUTTON» «StandardScrollBarIncButton» < Width 0.015, Height 0.015, ControlBackdrop «StandardScrollBarIncButtonBackdrop», Frame «BACKDROP» «StandardScrollBarIncButtonBackdrop» < BackdropBackground «UIWidgetsGluesGlueScreen-Scrollbar-UpArrow.blp», BackdropBlendAll, >>
под UIWidgetsGluesGlueScreen-Scrollbar-UpArrow.blp
нативки для работы с sliders
Скопировать в буфер
пример Slider с импортом fdf
Использовал готовый шаблон EscMenuSliderTemplate
Скопировать в буфер
Frame «SLIDER» «EscMenuSliderTemplate» < Height 0.012, Width 0.139, SliderLayoutHorizontal, ControlBackdrop «EscMenuScrollBarBackdropTemplate», Frame «BACKDROP» «EscMenuScrollBarBackdropTemplate» < DecorateFileNames, BackdropTileBackground, BackdropBackground «EscMenuSliderBackground», BackdropCornerFlags «UL|UR|BL|BR|T|L|B|R», BackdropCornerSize 0.006, BackdropBackgroundSize 0.006, BackdropBackgroundInsets 0.0025 0.0025 0.0025 0.0025, BackdropEdgeFile «EscMenuSliderBorder», BackdropBlendAll, >ControlDisabledBackdrop «EscMenuScrollBarDisabledBackdrop», Frame «BACKDROP» «EscMenuScrollBarDisabledBackdrop» < DecorateFileNames, BackdropTileBackground, BackdropBackground «EscMenuSliderBackground», BackdropCornerFlags «UL|UR|BL|BR|T|L|B|R», BackdropCornerSize 0.006, BackdropBackgroundSize 0.006, BackdropBackgroundInsets 0.0025 0.0025 0.0025 0.0025, BackdropEdgeFile «EscMenuSliderDisabledBorder», BackdropBlendAll, >SliderThumbButtonFrame «EscMenuThumbButtonTemplate», Frame «BUTTON» «EscMenuThumbButtonTemplate» < Width 0.016, Height 0.016, ControlBackdrop «EscMenuThumbButtonBackdropTemplate», Frame «BACKDROP» «EscMenuThumbButtonBackdropTemplate» < DecorateFileNames, BackdropBlendAll, BackdropBackground «EscMenuSliderThumbButton», >ControlDisabledBackdrop «EscMenuThumbButtonDisabledBackdrop», Frame «BACKDROP» «EscMenuThumbButtonDisabledBackdrop» < DecorateFileNames, BackdropBlendAll, BackdropBackground «EscMenuSliderDisabledThumbButton», >> >
вызвал кодом jass:
Скопировать в буфер
local framehandle fh = BlzCreateFrame(«EscMenuSliderTemplate», BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0),0, 0) call BlzFrameSetSize(fh, 0.2, 0.03) call BlzFrameSetAbsPoint(fh, FRAMEPOINT_CENTER, 0.4, 0.3)
Когда зажимаете за ползунок-кнопку и начинаете двигать, срабатывает событие FRAMEEVENT_SLIDER_VALUE_CHANGED о том, что изменилось значение ползунка BlzGetTriggerFrameValue().
Давайте-ка попробуем другой пример. А что если сделать кнопки In/Dec. Теперь у нас три кнопки Button: ползунок и две In/Dec
Скопировать в буфер
Frame «SCROLLBAR» «BattleNetScrollBarTemplate» < Width 0.0165, SliderLayoutVertical, ControlBackdrop «StandardScrollBarBackdrop», Frame «BACKDROP» «StandardScrollBarBackdrop» < BackdropTileBackground, BackdropBackground «UIWidgetsGluesGlueScreen-Scrollbar-BackdropBackground.blp», BackdropCornerFlags «UL|UR|BL|BR|T|L|B|R», BackdropCornerSize 0.008, BackdropBackgroundInsets 0.004 0.004 0.004 0.004, BackdropEdgeFile «UIWidgetsGluesGlueScreen-Scrollbar-BackdropBorder.blp», BackdropBlendAll, >ScrollBarIncButtonFrame «BattleNetScrollBarIncButton», Frame «BUTTON» «BattleNetScrollBarIncButton» < Width 0.015, Height 0.015, ControlBackdrop «BattleNetScrollBarIncButtonBackdrop», Frame «BACKDROP» «BattleNetScrollBarIncButtonBackdrop» < BackdropBackground «UIWidgetsGluesGlueScreen-Scrollbar-UpArrow.blp», BackdropBlendAll, >> ScrollBarDecButtonFrame «BattleNetScrollBarDecButton», Frame «BUTTON» «BattleNetScrollBarDecButton» < Width 0.015, Height 0.015, ControlBackdrop «BattleNetScrollBarDecButtonBackdrop», Frame «BACKDROP» «BattleNetScrollBarDecButtonBackdrop» < BackdropBackground «UIWidgetsGluesGlueScreen-Scrollbar-DownArrow.blp», BackdropBlendAll, >> SliderThumbButtonFrame «BattleNetThumbButton», Frame «BUTTON» «BattleNetThumbButton» < Width 0.01, Height 0.01, ControlBackdrop «BattleNetThumbButtonBackdrop», Frame «BACKDROP» «BattleNetThumbButtonBackdrop» < BackdropBackground «UIWidgetsGluesSinglePlayerSkirmish-ScrollBarKnob.blp», BackdropBlendAll, >> >
Кодом jass вызвали:
Скопировать в буфер
local framehandle fh = BlzCreateFrame(«BattleNetScrollBarTemplate», BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0),0, 0) call BlzFrameSetSize(fh, 0.03, 0.2) call BlzFrameSetAbsPoint(fh, FRAMEPOINT_CENTER, 0.4, 0.3)
пример Slider без импорта FDF
Ползунок в вертикальном положении с событием изменения значения. Внутри события отображается новое выбранное значение в виде сообщения.
Это работает из коробки.
Скопировать в буфер
do local real = MarkGameStarted function MarkGameStarted() real() — create a vertical slider by inheriting from a Scrollbar. It will use esc menu textures local sliderFrame = BlzCreateFrameByType( «SLIDER», «TestSlider», BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI,0), «QuestMainListScrollBar», 0 ) — clear the inherited attachment BlzFrameClearAllPoints(sliderFrame) — set pos and size BlzFrameSetAbsPoint(sliderFrame, FRAMEPOINT_TOPLEFT, 0.40, 0.30 ) BlzFrameSetSize(sliderFrame, 0.012, 0.06 ) — define the area the user can choose from BlzFrameSetMinMaxValue(sliderFrame, 0, 1000) — how accurate the user can choose value BlzFrameSetStepSize(sliderFrame, 1) local trigger = CreateTrigger() — register the Slider Event BlzTriggerRegisterFrameEvent(trigger, sliderFrame, FRAMEEVENT_SLIDER_VALUE_CHANGED) — this happens when the Slider is pushed TriggerAddAction(trigger, function() local frame = BlzGetTriggerFrame() print(BlzFrameGetName(frame), «new Value», BlzGetTriggerFrameValue()) end) end end
Ползунок в горизонтальном положении с фреймом TEXT справа, отображающий текущее значение. Пока мышь указывает на ползунок, вращение курсора мыши приводит к измененному значению, для этого необходимо, чтобы на карте был импортирован Templates.toc с EscMenuTemplates.fdf, на котором выполняется этот код Lua. ТОС.
Образцы для sliders/scrollbars
Примеры со sliders
- Функционал фреймов
- Список дефолтных фреймов
- Список дефолтных фреймов-1. Потомки gameUI
- Список дефолтных фреймов-2. Origin frames
- Список дефолтных фреймов-3. ConsoleUI и его потомки
- Скрыть дефолтный интерфейс
- UI: Positionate Frames
- Связь родитель-ребенок между фреймами
- Уровень наслаивания фрейма
- UI: FrameEvents
- Работа и чтение с toc-file и fdf-file
- Типы фреймов
- BACKDROP (задний фон)
- TEXT (текст)
- Highlight
- кнопки. основы
- Кнопки. примеры создания кнопок
- Кнопки. Создание эффектов кнопкам.
- Checkbox✔️❌️
- SLIDER/Scrollbar
- UI: Creating a Cam control
- EditBox — User Text
- Popupmenu
- TextArea
- ToolTip (всплывающая подсказка)
- Остальные типы функциональных фреймов
- UI — Simpleframes
- mixer 2 colors
- SIMPLEBUTTON (кнопка пользовательского интерфейса)
- tooltips для simplebutton
- SIMPLESTATUSBAR
- SIMPLECHECKBOX
- Creating a Multipage Frame
- UI: Change Lumber Text
- UI: Showing 3 Multiboards
- Frames Load
- Hovering Command/ItemButton (отслеживание наведения мыши)
- Как отследить находится ли курсор в поле интерфейса?
- Как сделать цели невыделяемые для курсора, прицел не закрываемым
- Как отследить в какой части миникарты находится точка
- Активирован ли прицел
- Как отследить паузу игры / открытие окон меню
- UI — Move Able Frame (определить координаты мыши на экране)
- UI: 3×3 Custom Unit Stats
- UI — FrameFlow (поток фреймов)
- UI — FrameList
- ToggleIconButton
- UI — Window (сворачиваемое/разворачивое окно со списками)
- GetMainSelectedUnit
- Событийные клавиши клавиатуры
- Image и Special Effect как индикаторы
- Как анимировать модель
- Инвентарь
- Меню строительства
Источник: xgm.guru
Прокрутка (Скролл)
Прокрутка, скролл, скроллинг(от анг. scroll, scrolling) – это способ перемещения визуальной части окна вверх, вниз, вправо и влево для того чтобы увидеть дополнительную информацию в окне. На приведенном ниже изображении показан пример окна, в котором пользователь может перемещаться вверх и вниз с помощью вертикальной полосы прокрутки, а также влево и вправо с помощью горизонтальной полосы прокрутки.
Совет: Используйте колесо мыши для прокрутки вверх и вниз по странице.
Совет: Используйте клавишу пробел, чтобы прокрутить веб-страницу на один экран вниз. А Shift+Пробел – для прокрутки вверх. Для этого также можно использовать клавиши Page Up и Page Down.
Источник: linchakin.com