You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Adobe Animate如何获取主时间轴各帧图片的坐标与尺寸?

问题分析与解决方案

你的核心问题是错误地遍历了MainTimeline的直接子元素,而非动画帧内的图层元素。Animate中,关键帧里的图片/图形元素并不属于MainTimeline的子元素集合(numChildren),而是存储在对应图层的当前帧对象中,这就是为什么你只能看到一个固定的Shape,且每帧输出相同。

修正后的代码

import flash.display.DisplayObject;
import flash.events.Event;
import fl.motion.Layer;
import fl.motion.Frame;

var mainTimeline:MainTimeline = root as MainTimeline;

addEventListener(Event.ENTER_FRAME, onFrameUpdate);

function onFrameUpdate(e:Event):void {
    trace("========================");
    trace("当前帧编号: " + mainTimeline.currentFrame);
    
    // 遍历所有图层
    for (var layerIdx:int = 0; layerIdx < mainTimeline.timeline.layers.length; layerIdx++) {
        var targetLayer:Layer = mainTimeline.timeline.layers[layerIdx];
        // 帧索引从0开始,currentFrame从1开始,所以需要减1
        var currentFrame:Frame = targetLayer.frames[mainTimeline.currentFrame - 1];
        
        if (currentFrame && currentFrame.elements.length > 0) {
            trace("--- 图层名称: " + targetLayer.name);
            // 遍历当前帧内的所有元素
            for (var elemIdx:int = 0; elemIdx < currentFrame.elements.length; elemIdx++) {
                var elem:DisplayObject = currentFrame.elements[elemIdx] as DisplayObject;
                if (elem) {
                    trace("元素类型: " + elem.constructor.name);
                    trace("坐标: x=" + elem.x + ", y=" + elem.y);
                    trace("尺寸: 宽=" + elem.width + ", 高=" + elem.height);
                    trace("------------------------");
                }
            }
        }
    }
}

关键说明

  1. 正确的元素存储位置:
    动画帧中的元素(图片/图形)都保存在对应图层的Frame对象的elements数组中,而非MainTimeline的直接子级。mainTimeline.timeline.layers可以获取文档中所有图层的集合。
  2. 帧索引的对应关系:
    currentFrame是从1开始计数的,而图层的frames数组索引从0开始,所以需要用currentFrame - 1来获取当前帧的对象。
  3. 元素类型筛选:
    如果你只需要输出图片(Bitmap),可以在遍历中增加判断:if (elem is Bitmap),过滤掉非位图元素。

额外优化建议

  • 批量导出数据:面对280帧的大量数据,可使用FileStream类将输出内容写入本地文本文件(需在AIR环境下运行,或调试时手动复制输出窗口内容)。
  • 递归处理嵌套元素:若图片被放在MovieClip实例内部,需要递归遍历MovieClip的numChildren,获取内部元素的坐标与尺寸。

内容的提问来源于stack exchange,提问作者GeorgePorge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:52:45