实用创作流程

像素动画帧时长:检查保存后的 GIF

炭黑弧形底座上,开合程度不同的象牙色折纸扇
文章配图。操作步骤另附真实 Ciyo 工作区的完整截图。

四帧动画不一定要让四帧停留一样久。闪烁的灯笼应该在睁开状态停留更久,半闭状态短些;平均分配时长,可能把短促眨眼变成缓慢起伏。

我们在 Ciyo 中制作了一个虚构的四帧灯笼,并检查下载后的真实 GIF。睁开、半闭、闭合、半闭分别持续 600、100、200、100 毫秒,完整循环为一秒。这是代码生成的时序示例,不是视频模型比较。

把帧顺序和帧时长分开记录

同时写明顺序和时长。PNG 帧条能直观展示帧顺序,但不能证明每帧会显示多久。跨工具交付时,应让时间清单跟随图像一起保存。

我们的时序有意重复半闭状态。两个半闭画面外观相同,却处于序列的不同位置。检查编码文件时,要保留这一顺序。

灯笼循环示例
帧状态时长累计结束时间
0睁开600 ms600 ms
1半闭100 ms700 ms
2闭合200 ms900 ms
3半闭100 ms1,000 ms

制作原生循环和查看副本

新建 Ciyo 项目,要求生成 32×32 GIF、128×32 四帧条,以及 256×256 最近邻放大预览。保持调色板和锚点几何一致。放大版本方便查看像素,不应悄悄替换原生游戏素材。

要求智能体写入 GIF 后重新打开,报告实际编码的帧数、每帧时长和循环设置。看起来正确的帧条,无法揭示这类导出差异。

完整 Ciyo 界面中的四帧明确时序请求
真实请求在制作动画前就给出了各帧时长。
在 Ciyo 中试试
只用代码生成一个虚构的4 帧 32x32 透明像素灯笼眨眼动画。保持几何锚点和调色板一致,帧顺序为睁开、半闭、闭合、半闭。时长为 [600,100,200,100] 毫秒,无限循环,完整周期为 1000ms。交付原生 GIF、4 帧 PNG 帧条,以及 8x 最近邻放大的 GIF 预览。把帧条和预览加入画布,提供下载链接,并在回复中重复时间清单。保存后检查 GIF 实际编码的每帧时长、尺寸、loop=0 和周期总时长,不要从静态帧条推断时间。不调用付费图像或视频生成。这是在真实 Ciyo 中用代码生成的示意样本,不是模型质量基准。

检查导出文件,而不是只数画面

真实 Ciyo 输出包含帧条、原生 GIF 和放大 GIF。我们下载了原始 GIF 文件,并独立重新打开检查。两者都有四帧,编码时长为 [600,100,200,100],总计 1,000 ms,循环设置为 loop=0。

原生文件为 32×32,检查副本为 256×256。这些只是对两个文件的实测结果,不代表所有浏览器播放都精确,也不证明引擎时序或所有目标环境的动画质量。

完整 Ciyo 画布中的灯笼帧条和动画预览
实际输出。旁边的时长表以可读文字给出了时序约定。

更换封装格式时保留时序

Pillow 的 GIF 文档提供了逐帧时长和循环选项,我们据此检查示例。其他格式或导入器可能采用不同的时间表示。交付时附上时长清单,不要假设精灵图集会自动携带这些信息。

在目标动画系统中应用停留时间

如果引擎只导入图像,就在其动画系统中应用这四个时长。若导入器合并相同帧,或按固定帧率重新采样,应将结果与预期的一秒节奏比较。不要为了补偿原因不明的时序丢失而修改画面。

完整 Ciyo 界面中的动画时序验证步骤
智能体实际检查了保存并托管的文件。我们也独立重新打开下载文件进行验证。

按预期显示尺寸看完整循环

在实际使用环境里播放动画,确认较长的睁开停留和短促过渡依然清楚。用放大副本检查锚点和像素一致性,再回到原生显示比例判断节奏。

在游戏动作中,时间还决定声音、特效和碰撞变化的发生时刻。本例眨眼没有攻击或伤害逻辑。应将这些事件放入单独、明确的时间线,并在引擎中测试。

常见问题

能从 PNG 帧条推断时长吗?

不能。帧条只显示画面和顺序。请读取时间清单,或检查编码后的动画。

loop=0 表示停止动画吗?

在本例的 GIF 文件中,loop=0 表示无限循环。

编码周期为一秒,就能保证所有环境播放都准确吗?

不能。需要在将要播放动画的浏览器、应用或引擎中验证。

让时间清单跟随角色动画帧

先在 Ciyo 中完成一个经过检查的示例。保留源文件,在自己的项目中使用前检查导出结果。