Aseprite
Is there a way to quickly remove every other frame?
Without having to select each one, is there a way to quick remove every other frame?
Първоначално публикувано от behreajj:
I would use a Lua script. https://www.aseprite.org/docs/scripting/

local delete = 1 local skip = 1 local offset = 0 local sprite = app.activeSprite if not sprite then return end local layer = app.activeLayer if not layer then return end if layer.isGroup then return end local all = delete + skip local frames = sprite.frames local lenFrames = #frames app.transaction(function() local i = lenFrames while i > 0 do i = i - 1 if (i + offset) % all < delete then sprite:deleteFrame(frames[1 + i]) -- To delete cels instead of frames -- in cases where sprite has multiple layers. -- local cel = layer:cel(frames[1 + i]) -- if cel then -- sprite:deleteCel(cel) -- end end end end)

Like the comment in the code says, if you'd like to delete a frame's image contents, but leave the frame itself, you can do that as well.
< >
Показване на 1-3 от 3 коментара
Авторът е посочил, че тази публикация отговаря на първоначалната му тема.
I would use a Lua script. https://www.aseprite.org/docs/scripting/

local delete = 1 local skip = 1 local offset = 0 local sprite = app.activeSprite if not sprite then return end local layer = app.activeLayer if not layer then return end if layer.isGroup then return end local all = delete + skip local frames = sprite.frames local lenFrames = #frames app.transaction(function() local i = lenFrames while i > 0 do i = i - 1 if (i + offset) % all < delete then sprite:deleteFrame(frames[1 + i]) -- To delete cels instead of frames -- in cases where sprite has multiple layers. -- local cel = layer:cel(frames[1 + i]) -- if cel then -- sprite:deleteCel(cel) -- end end end end)

Like the comment in the code says, if you'd like to delete a frame's image contents, but leave the frame itself, you can do that as well.
Последно редактиран от behreajj; 27 окт. 2022 в 20:16
omg thank you! this is great, I didn't even know you could do this!
heres a version with an input prompt instead of hardcoded values

local dlg = Dialog { title = "Remove Frames" } dlg:label { id = "label1", text = "Delete X frames:" } dlg:number { id = "delete", text = "1", decimals = 0, value = 1 } dlg:label { id = "label2", text = "Skip Y frames after each delete:" } dlg:number { id = "skip", text = "1", decimals = 0, value = 1 } dlg:label { id = "label3", text = "Start from frame Z:" } dlg:number { id = "offset", text = "1", decimals = 0, value = 0 } dlg:button { id = "ok", text = "OK" } dlg:button { id = "cancel", text = "Cancel" } dlg:show() local data = dlg.data if not data.ok then return end local delete = data.delete or 1 local skip = data.skip or 1 local offset = data.offset or 0 local sprite = app.activeSprite if not sprite then return end local layer = app.activeLayer if not layer then return end if layer.isGroup then return end local all = delete + skip local frames = sprite.frames local lenFrames = #frames app.transaction(function() local i = lenFrames while i > 0 do i = i - 1 if (i + offset) % all < delete then sprite:deleteFrame(frames[1 + i]) -- To delete cels instead of frames in cases where sprite has multiple layers -- local cel = layer:cel(frames[1 + i]) -- if cel then -- sprite:deleteCel(cel) -- end end end end)
< >
Показване на 1-3 от 3 коментара
На страница: 1530 50