Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
Lua
Тип:
Наработка
Версия Warcraft:
Reforged
Пришло время для очередных бесполезных и простеньких ресурсов...
Это было известно давным-давно и используется в каждой второй карте (нет)... ладно нафиг текст, вот сама гифка, код, видос и карта
function CreateAndPlayGif(x, y,path,size)
    local gifPath = path--"gif\\gargoule_page_000" -- путь до кадров (имя без последнего порядкового символа или нескольких, смотря столько кадров)
    local endFrame = 8
    local s = 1
    local gif = BlzCreateFrameByType('BACKDROP', 'FaceButtonIcon', BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), '', 0)
    local firstShow = false
    local fps=1/16
    BlzFrameSetParent(gif, BlzGetFrameByName("ConsoleUIBackdrop", 0))
    BlzFrameSetTexture(gif, gifPath .. 0, 0, true)
    BlzFrameSetSize(gif, size, size)
    BlzFrameSetAbsPoint(gif, FRAMEPOINT_TOP, x, y)
    BlzFrameSetVisible(gif, false)
    TimerStart(CreateTimer(), fps, true, function()
        if not firstShow then
            firstShow = true
            BlzFrameSetVisible(gif, true)
        end
        BlzFrameSetTexture(gif, gifPath .. s, 0, true)
        --print(s)
        s=s+1
        if s>endFrame then
            s=1
        end
    end)
    return gif
end
`
ОЖИДАНИЕ РЕКЛАМЫ...
25
Используя один модельный костыль, можно также выводить "гифки" на спрайтах.
Дело в том, что код типа
Frame = BlzCreateFrameByType("SPRITE", "Frame", BlzGetFrameByName("ConsoleUIBackdrop", 0), "", 1) 
BlzFrameSetAbsPoint(Frame, FRAMEPOINT_CENTER, x, y) 
BlzFrameSetModel(Frame, "ui\\glues\\battlenet\\battlenetworking\\battlenetworking.mdx", 1) 
выведет на экран стандартный баттлнетовский двигающийся глаз.
или много двигающихся глаз
"И чо?" — спросите вы. А то, что эта анимация сделана путём, так называемого, анимированного материала. То есть там лежит 29 текстур, которые покадрово сменяют друг друга. В принципе, если у нас уже есть разложенная на кадры гифка, то ничего не мешает сделать спрайт с анимацией материала, и использовать его через FrameSetModel.
Ну офк, технически такая реализации более сложная и объёмная, чем вариант, указанный в статье. Но она есть, и, возможно, в каких-то ситуациях может быть эффективной.
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.