---@param frame framehandle
---@param primaryProp integer
---@param flags integer
---@return nothing
function BlzFrameSetSpriteAnimate(frame, primaryProp, flags) end -- (native)
Управляет очередью анимаций спрайта, не самым очевидным образом.
frame
Работает только с двумя типами фреймов: SPRITE и STATUSBAR.
primaryProp
В аргумент отправляется число, но это не айди анимации в модели. Анимация будет искаться по токену из этого словаря. Всего доступно 26 токенов анимаций.
primaryProp |
Название анимации |
0 |
Birth |
1 |
Death |
2 |
Stand |
3 |
Morph |
4 |
Alternate |
5 |
Found |
6 |
MainMenu |
7 |
SinglePlayer |
8 |
SinglePlayerSkirmish |
9 |
Campaign |
10 |
MultiPlayer |
11 |
MultiPlayerPreGameChat |
12 |
ViewReplay |
13 |
BattleNetChatRoom |
14 |
BattleNetCustom |
15 |
BattleNetCustomCreate |
16 |
BattleNetWelcome |
17 |
BattleNetAMM |
18 |
BattleNetAdvancedOptions |
19 |
BattleNetChannel |
20 |
BattleNetProfile |
21 |
BattleNetTeamChat |
22 |
BattleNetUserList |
23 |
Options |
24 |
RealmSelection |
25 |
MainCancelPanel |
В формате луа таблицы
local primaryPropsDict = {
[0] = "birth",
[1] = "death",
[2] = "stand",
[3] = "morph",
[4] = "alternate",
[5] = "found",
[6] = "mainmenu",
[7] = "singleplayer",
[8] = "singleplayerskirmish",
[9] = "campaign",
[10] = "multiplayer",
[11] = "multiplayerpregamechat",
[12] = "viewreplay",
[13] = "battlenetchatroom",
[14] = "battlenetcustom",
[15] = "battlenetcustomcreate",
[16] = "battlenetwelcome",
[17] = "battlenetamm",
[18] = "battlenetadvancedoptions",
[19] = "battlenetchannel",
[20] = "battlenetprofile",
[21] = "battlenetteamchat",
[22] = "battlenetuserlist",
[23] = "options",
[24] = "realmselection",
[25] = "maincancelpanel",
}
В формате луа констант
ANIM_SPRITE_PROP_BIRTH = 0
ANIM_SPRITE_PROP_DEATH = 1
ANIM_SPRITE_PROP_STAND = 2
ANIM_SPRITE_PROP_MORPH = 3
ANIM_SPRITE_PROP_ALTERNATE = 4
ANIM_SPRITE_PROP_FOUND = 5
ANIM_SPRITE_PROP_MAINMENU = 6
ANIM_SPRITE_PROP_SINGLEPLAYER = 7
ANIM_SPRITE_PROP_SINGLEPLAYERSKIRMISH = 8
ANIM_SPRITE_PROP_CAMPAIGN = 9
ANIM_SPRITE_PROP_MULTIPLAYER = 10
ANIM_SPRITE_PROP_MULTIPLAYERPREGAMECHAT = 11
ANIM_SPRITE_PROP_VIEWREPLAY = 12
ANIM_SPRITE_PROP_BATTLENETCHATROOM = 13
ANIM_SPRITE_PROP_BATTLENETCUSTOM = 14
ANIM_SPRITE_PROP_BATTLENETCUSTOMCREATE = 15
ANIM_SPRITE_PROP_BATTLENETWELCOME = 16
ANIM_SPRITE_PROP_BATTLENETAMM = 17
ANIM_SPRITE_PROP_BATTLENETADVANCEDOPTIONS = 18
ANIM_SPRITE_PROP_BATTLENETCHANNEL = 19
ANIM_SPRITE_PROP_BATTLENETPROFILE = 20
ANIM_SPRITE_PROP_BATTLENETTEAMCHAT = 21
ANIM_SPRITE_PROP_BATTLENETUSERLIST = 22
ANIM_SPRITE_PROP_OPTIONS = 23
ANIM_SPRITE_PROP_REALMSELECTION = 24
ANIM_SPRITE_PROP_MAINCANCELPANEL = 25
flags
Битовая маска. Если нужно передать несколько флагов, то в аргумент отправляется сумма чисел (например очередь + первая найденная подходящая анимация: 2 + 8 = 10). Не разбирал глубоко, может кто-то сможет дополнить?
flags |
Результат |
0 (без флагов) |
Базовая логика. Обнуляет очередь, немедленно устанавливает новую анимацию |
1 |
Добавляет анимацию в конец очереди только если она добавляется после незацикленной анимации (с флагом NonLooping) |
2 |
Добавляет анимацию в конец очереди |
3 |
Вроде работает так же, как и 2. Если ни один из флагов 1, 2 или 3 не установлен, то вызов нативки очистит очередь анимаций |
4 |
Хз, но похоже, что ни на что не влияет |
8 |
При нескольких подходящих по токену анимациях (Stand - 1, Stand - 2 и т.д.) будет добавлена не случайная, а первая найденная (анимация с самым маленьким ID) |
16 |
Выбирает из подходящих анимаций наименее редкую (самый маленький Rarity) |
32 |
Выбирает из подходящих анимаций наиболее редкую (самый большой Rarity) |
48 |
Аналогично 16 |
4096 |
Хз |
12224 |
Хз |
16384 |
Хз |
Примеры использования
local spr
-- Установить анимацию Stand
BlzFrameSetSpriteAnimate(spr, 2, 0)
-- Установить самую редкую анимацию Stand
BlzFrameSetSpriteAnimate(spr, 2, 32)
-- Сформировать очередь из 26 анимаций
-- Прим. Очередь двигается даже во время игровой паузы
for i = 0, 25 do
BlzFrameSetSpriteAnimate(spr, i, 2)
end
-- Сформировать очередь, но использовать только самые редкие анимации
for i = 0, 25 do
BlzFrameSetSpriteAnimate(spr, i, 34)
end
РАСПРОСТРАНИТЕ