Добавлен ofeerist,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
Версия Warcraft:
1.26, 1.27a, 1.27b, 1.28f
Небольшое отступление
- Замена стандартного функционала на фреймах - есть
- Полезная наработка, показанная на примере фреймов - есть
- Рофл функционал, набравший больше всего лайков - есть
- Часто повторяемая и гибкая система - есть
- Нестандартное применение обычного фрейма - есть
- Фрейм на фреймах - ?
- Полезная наработка, показанная на примере фреймов - есть
- Рофл функционал, набравший больше всего лайков - есть
- Часто повторяемая и гибкая система - есть
- Нестандартное применение обычного фрейма - есть
- Фрейм на фреймах - ?
Кастомный слайдер
- Работает.
- Из-за сломанного GetFrameValue в отношении слайдеров, крайне полезная наработка.
- Работает.
- Из-за сломанного GetFrameValue в отношении слайдеров, крайне полезная наработка.
Функционал
- Имеет адекватный геттер и сеттер.
- Повторяет функционал обычных слайдеров.
- Есть возможность выставлять минимальные и максимальные значения. Адекватная работа возможна только при, (-∞, 0) и (0, ∞)
- Я не математик, поэтому не смог сделать лучше, если есть хорошее решение > жду в комментариях
- Имеет адекватный геттер и сеттер.
- Повторяет функционал обычных слайдеров.
- Есть возможность выставлять минимальные и максимальные значения. Адекватная работа возможна только при, (-∞, 0) и (0, ∞)
- Я не математик, поэтому не смог сделать лучше, если есть хорошее решение > жду в комментариях
Требования
- Уверенное пользование jass.
- Мемхак анрайза. (>1.3)
- pjass для работы мемхака. (Закинуть в JNGP/jasshelper)
- Уверенное пользование jass.
- Мемхак анрайза. (>1.3)
- pjass для работы мемхака. (Закинуть в JNGP/jasshelper)
Использование
1. Скачиваем пример.
2. Копируем папку триггеров CustomSlider и кидаем к себе в карту.
3. Экспортируем text.fdf, uitoc.toc и кидаем к себе в карту.
4. Настраиваем это дело. Это потребует времени
5. Вшиваем в свою систему.
6. Радуемся. (optional)
1. Скачиваем пример.
2. Копируем папку триггеров CustomSlider и кидаем к себе в карту.
3. Экспортируем text.fdf, uitoc.toc и кидаем к себе в карту.
4. Настраиваем это дело. Это потребует времени
5. Вшиваем в свою систему.
6. Радуемся. (optional)
Код
- 6.
- Из кода, думаю, все ясно.
- 6.
- Из кода, думаю, все ясно.
Init
globals
integer SliderBackdrop
real BackdropPosX = .4
real BackdropPosY = .3
integer SliderThumb
real ThumbX = 0
real ThumbY = 0
// Настройки
real BackdropWidth = .3
real MinValue = 0
real MaxValue = 100
real CurrentValue = 0
// Демонстрация
integer Text
endglobals
// GetFramePointX|Y работают не корректно
function Trig_Init_Actions takes nothing returns nothing
local integer i = 0
call LoadTOCFile("uitoc.toc")
set SliderBackdrop = CreateFrame("SliderBackdrop", pGameUI, 0)
call SetFrameSize(SliderBackdrop, BackdropWidth, .01)
call SetFrameAbsolutePoint(SliderBackdrop, 4, BackdropPosX, BackdropPosY)
set SliderThumb = CreateFrame("SliderThumb", SliderBackdrop, 1)
call SetFrameSize(SliderThumb, .015, .015)
call SetFramePoint(SliderThumb, 4, SliderBackdrop, 4, ThumbX, ThumbY)
set Text = CreateFrame("ChatText2", pGameUI, 2)
call SetFrameSize(Text, .015, .015)
call SetFramePoint(Text, 4, pGameUI, 4, 0, .1)
call SetFrameText(Text, R2S(CurrentValue))
endfunction
//===========================================================================
function InitTrig_Init takes nothing returns nothing
set gg_trg_Init = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_Init, 0.05 )
call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions )
endfunction
MouseEvent
globals
boolean KeySpan
boolean OnSlider
endglobals
function SetCSliderValue takes real value returns nothing
//local real temp
//local real temp1
//local real temp2
//local real temp3
//set temp = value - MinValue
//set temp1 = temp / MaxValue
//set temp2 = temp1 * BackdropWidth
//set temp3 = temp2 - BackdropWidth / 2
set CurrentValue = value
set ThumbX = ( ( (value - MinValue) / MaxValue ) * BackdropWidth ) - ( BackdropWidth / 2 )
call SetFramePoint(SliderThumb, 4, SliderBackdrop, 4, ThumbX, ThumbY)
endfunction
function MouseEvent takes nothing returns nothing
local integer i = 0
local integer layer = FindCLayerUnderCursor()
local real frameX = FromPixelX(R2I(GetCursorXRelative()))
local real frameY = .6 - FromPixelY(R2I(GetCursorYRelative()))
loop
exitwhen i == 2
if GetLocalPlayer() == Player(i) then
// call SetCSliderValue(25)
if ( layer == SliderThumb and IsKeyPressed(0x01) ) or OnSlider then
set OnSlider = true
if frameX - BackdropPosX <= BackdropWidth / 2 and frameX - BackdropPosX >= -BackdropWidth / 2 then
set ThumbX = frameX - BackdropPosX
call SetFramePoint(SliderThumb, 4, SliderBackdrop, 4, ThumbX, ThumbY)
set CurrentValue = MinValue + ((ThumbX + BackdropWidth / 2) / BackdropWidth) * MaxValue
endif
endif
call SetFrameText(Text, R2S(CurrentValue))
if IsKeyPressed(0x01) then
set KeySpan = false
else
set KeySpan = true
set OnSlider = false
endif
endif
set i = i + 1
endloop
endfunction
//===========================================================================
function InitTrig_MouseEvent takes nothing returns nothing
//set gg_trg_MouseEvent = CreateTrigger( )
call TimerStart(CreateTimer(), .001, true, function MouseEvent)
endfunction
Бонус Две наработки в одном ресурсе
- Управление камерой на таких слайдерах.
- Управление камерой на таких слайдерах.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Берги