Добавлен MpW,
опубликован
Основы Интерфейса
Содержание:
Checkbox
Checkbox - кнопка с флажком. Она имеет два состояния: включенное (check) / выключенное (UnCheck).
Checkbox - кнопка с флажком. Она имеет два состояния: включенное (check) / выключенное (UnCheck).
Checkbox (флажок) - это фрейм, у которого как было ранее отмечено 2 состояния: не отмечены (UnChecked) и отмечены (Checked). Это состояние визуально отображается с помощью функции Highlight child-Frame.
короче, Checkbox - это та же самая кнопка, только ей еще добавили два события: CHECKBOX_CHECKED, CHECKBOX_UNCHECKED
fdf - функции CheckBox
fdf-функции немного у checkbox, но многие выше уже разобрали в backdrop, highlight. Это тоже самая кнопка, но тут добавляется переключатель: да/нет.
Теперь у формата CheckBox нужно добавить текстуры для флага/галочки. Эти параметры похожи на Control только для текстуры флага/галочки
CheckBoxCheckHighlight
CheckBoxCheckHighlight "FrameName",
Вы создаете текстуру галочки для CheckBox. Эта текстура используется как тип фрейма HighLight Отображается, когда флажок установлен и включен.
Пример:
//весь код и нужный фрейм можно найти в fdf-скриптах
CheckBoxCheckHighlight "BattleNetRadioButtonHighlightTemplate",
Frame "HIGHLIGHT" "BattleNetRadioButtonHighlightTemplate" {
HighlightType "FILETEXTURE",
HighlightAlphaFile "UI\Widgets\Glues\GlueScreen-RadioButton-Button.blp",
HighlightAlphaMode "BLEND",
}
backdrop для checkbox
флаг для checkbox
"UI\Widgets\Glues\GlueScreen-RadioButton-Button.blp" Blue point
backdrop для checkbox
флаг для checkbox
CheckBoxDisabledCheckHighlight
CheckBoxDisabledCheckHighlight FrameName,
То же, что и CheckBoxCheckHighlight в отключенном состоянии. Т.е. во время паузы игры ваша меню затемняется.
Пример:
CheckBoxDisabledCheckHighlight "EscMenuDisabledCheckHighlightTemplate",
CheckBoxDisabledCheckHighlight "EscMenuDisabledCheckHighlightTemplate",
//весь код и нужный фрейм можно найти в fdf-скриптах
CheckBoxDisabledCheckHighlight "EscMenuDisabledCheckHighlightTemplate",
Frame "HIGHLIGHT" "EscMenuDisabledCheckHighlightTemplate" {
DecorateFileNames,
HighlightType "FILETEXTURE",
HighlightAlphaFile "EscMenuDisabledCheckHighlight",
HighlightAlphaMode "BLEND",
}
Для CheckBox добавляются события FRAMEEVENT_CHECKBOX_CHECKED - когда галочка (флаг) включен и FRAMEEVENT_CHECKBOX_UNCHECKED - когда галочка (флаг) выключен. Остальные события аналогично как с кнопкой.
пример CheckBox с fdf
fdf код
Есть образец в fdf-файле UI\FrameDef\glue\battlenettemplates.fdf
// --- CHECKBOX --------------------------------------------------------------------
Frame "GLUECHECKBOX" "EscMenuCheckBoxTemplate" {
Width 0.024,
Height 0.024,
ControlBackdrop "EscMenuCheckBoxBackdrop",
Frame "BACKDROP" "EscMenuCheckBoxBackdrop" {
DecorateFileNames,
BackdropBlendAll,
BackdropBackground "EscMenuCheckBoxBackground",
}
ControlDisabledBackdrop "EscMenuDisabledCheckBoxBackdrop",
Frame "BACKDROP" "EscMenuDisabledCheckBoxBackdrop" {
DecorateFileNames,
BackdropBlendAll,
BackdropBackground "EscMenuDisabledCheckBoxBackground",
}
ControlPushedBackdrop "EscMenuCheckBoxPushedBackdrop",
Frame "BACKDROP" "EscMenuCheckBoxPushedBackdrop" {
DecorateFileNames,
BackdropBlendAll,
BackdropBackground "EscMenuCheckBoxPushedBackground",
}
CheckBoxCheckHighlight "EscMenuCheckHighlightTemplate",
Frame "HIGHLIGHT" "EscMenuCheckHighlightTemplate" {
DecorateFileNames,
HighlightType "FILETEXTURE",
HighlightAlphaFile "EscMenuCheckBoxCheckHighlight",
HighlightAlphaMode "BLEND",
}
CheckBoxDisabledCheckHighlight "EscMenuDisabledCheckHighlightTemplate",
Frame "HIGHLIGHT" "EscMenuDisabledCheckHighlightTemplate" {
DecorateFileNames,
HighlightType "FILETEXTURE",
HighlightAlphaFile "EscMenuDisabledCheckHighlight",
HighlightAlphaMode "BLEND",
}
}
jass код:
//Create "EscMenuCheckBoxTemplate", for game UI
local framehandle buttonFrame = BlzCreateFrame("EscMenuCheckBoxTemplate", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
// Place the buttonFrame to the center of the screen
call BlzFrameSetAbsPoint(buttonFrame, FRAMEPOINT_CENTER, 0.4, 0.3)
// Give that buttonFrame a size
call BlzFrameSetSize(buttonFrame, 0.05, 0.05)
Заметка: почему-то триггер не создает без toc-file, хотя эти файлы изначально лежат в архиве игры, я почему-то не смог создать фрейм без toc-file. Дело в том, что игра не все файлы fdf загружает в игру. Нужно загрузить игру будет файл с помощью импорта
через прописку IncludeFile "UI\FrameDef\glue\battlenettemplates.fdf",
или скопировать фрейм из этого fdf файла и загрузить файл
через прописку IncludeFile "UI\FrameDef\glue\battlenettemplates.fdf",
или скопировать фрейм из этого fdf файла и загрузить файл
Вот код из фрейма BattleNetRadioButtonTemplate в файле UI\FrameDef\glue\battlenettemplates.fdf, поменял названия, остальное все также.
fdf код
Frame "CHECKBOX" "MyRadioButtonTemplate" {
Width 0.024,
Height 0.024,
ControlBackdrop "MyRadioButtonBackdrop",
Frame "BACKDROP" "MyRadioButtonBackdrop" {
BackdropBlendAll,
BackdropBackground "UI\Widgets\Glues\GlueScreen-RadioButton-Background.blp",
}
ControlPushedBackdrop "MyRadioButtonPushedBackdrop",
Frame "BACKDROP" "MyRadioButtonPushedBackdrop" {
BackdropBlendAll,
BackdropBackground "UI\Widgets\Glues\GlueScreen-RadioButton-BackgroundPressed.blp",
}
ControlDisabledBackdrop "MyCheckBoxDisabledBackdrop",
Frame "BACKDROP" "MyCheckBoxDisabledBackdrop" {
BackdropBlendAll,
BackdropBackground "UI\Widgets\Glues\GlueScreen-Checkbox-BackgroundDisabled.blp",
}
CheckBoxCheckHighlight "MyRadioButtonHighlightTemplate",
Frame "HIGHLIGHT" "MyRadioButtonHighlightTemplate" {
HighlightType "FILETEXTURE",
HighlightAlphaFile "UI\Widgets\Glues\GlueScreen-RadioButton-Button.blp",
HighlightAlphaMode "BLEND",
}
CheckBoxDisabledCheckHighlight "MyDisabledRadioButtonHighlightTemplate",
Frame "HIGHLIGHT" "MyDisabledRadioButtonHighlightTemplate" {
HighlightType "FILETEXTURE",
HighlightAlphaFile "UI\Widgets\Glues\GlueScreen-RadioButton-ButtonDisabled.blp",
HighlightAlphaMode "BLEND",
}
}
код jass
//Create "MyRadioButtonTemplate", for game UI
local framehandle buttonFrame = BlzCreateFrame("MyRadioButtonTemplate", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
// Place the buttonFrame to the center of the screen
call BlzFrameSetAbsPoint(buttonFrame, FRAMEPOINT_CENTER, 0.4, 0.3)
// Give that buttonFrame a size
call BlzFrameSetSize(buttonFrame, 0.05, 0.05)
пример Checkbox без импорта FDF
Поскольку в игре есть несколько шаблонов Checkbox, и они загружены по умолчанию. То можно использовать для создания Checkbox, используя только код без импорта. Если конечно знаете название фрейма, что брать данные этого фрейма.
Возможные варианты: QuestCheckBox, QuestCheckBox2, QuestCheckBox3. Все они используют текстуры EscMenu, но имеют разные размеры. Хотя это не имеет большого значения, можно просто изменить размер с помощью BlzFrameSetSize
Возможные варианты: QuestCheckBox, QuestCheckBox2, QuestCheckBox3. Все они используют текстуры EscMenu, но имеют разные размеры. Хотя это не имеет большого значения, можно просто изменить размер с помощью BlzFrameSetSize
Этот код Lua работает по умолчанию и создает небольшой флажок в центре экрана.
код
do
local real = MarkGameStarted
function MarkGameStarted()
real()
local frame = BlzCreateFrame("QuestCheckBox2", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
local trigger = CreateTrigger()
BlzFrameSetAbsPoint(frame, FRAMEPOINT_CENTER, 0.4, 0.3)
BlzTriggerRegisterFrameEvent(trigger, frame, FRAMEEVENT_CHECKBOX_CHECKED)
BlzTriggerRegisterFrameEvent(trigger, frame, FRAMEEVENT_CHECKBOX_UNCHECKED)
TriggerAddAction(trigger, function()
if BlzGetTriggerFrameEvent() == FRAMEEVENT_CHECKBOX_CHECKED then
print("CheckBox was checked")
else
print("CheckBox was unchecked")
end
end)
end
end
Также можно использовать 2 других флажка:
«ScoreScreenBottomCheckButtonTemplate» - это только выделение при наведении курсора мыши, а отмеченная текстура - желтый свет. По умолчанию загружается. Может использоваться вместе с BACKDROP.
И есть «EscMenuRadioButtonTemplate», не загруженный по умолчанию, для этого нужно было бы загрузить UI \ FrameDef \ UI \ escmenutemplates.fdf в игру перед его использованием. (см. выше мы уже создавали его)
«ScoreScreenBottomCheckButtonTemplate» - это только выделение при наведении курсора мыши, а отмеченная текстура - желтый свет. По умолчанию загружается. Может использоваться вместе с BACKDROP.
И есть «EscMenuRadioButtonTemplate», не загруженный по умолчанию, для этого нужно было бы загрузить UI \ FrameDef \ UI \ escmenutemplates.fdf в игру перед его использованием. (см. выше мы уже создавали его)
Образцы для CheckBox из fdf-файлов
Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
Комментарии пока отсутcтвуют.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.