1

我们的动画师在 Adob​​e Flash CS5 中创建了一个非常复杂的影片剪辑,其中包含 50 多个图层、补间动画和 3D 补间。不幸的是,她将所有元素放置在右侧太远 680 像素,向下太远 400 像素。

我们正在尝试找到一种方法来移动所有图层上的所有元素而不会破坏动画。我们尝试了一个名为“MoveRegpoint”的 JSFL 脚本,但它不能正确处理 Motion Tween 关键帧(菱形)。所以现在我正在尝试自己编写一个 JSFL。

如何确定帧是否为补间动画以及该帧是否为关键帧?查看当前脚本:

// get the selected Element
var vElement = fl.getDocumentDOM().selection[0];

// get the Timeline of the Element
var vTimeline = vElement.libraryItem.timeline;

// loop over the Timeline's Layers
var vLayersLength = vTimeline.layers.length;
for (var i=0; i<vLayersLength; ++i) {
    var vLayer = vTimeline.layers[i];

    // loop over each Layer's Frames
    var vFramesLength = vLayer.frames.length;
    for (var j=0; j<vFramesLength; ++j) {
        var vFrame = vLayer.frames[j];

        if(vFrame.isMotionObject()) {
            // DOES NOT WORK, startFrame is always 0
            if(vFrame.startFrame == j) {}
        }
    }    
}

需要说明的是:frame.startFrame始终为 0,因为补间动画从第 0 帧开始。第 12、27 和 49 帧有菱形定义运动。我想知道一个框架是否包含钻石并访问这些钻石中的数据。

保罗

4

2 回答 2

1

有一个完美的 Flash 扩展名为 New Anim Clip - 你可以在 Toon Monkey 上找到它:http: //toonmonkey.com/extensions.html

我一直通过以下方式使用它: - 在新剪辑中选择我想要的所有帧(在多个图层上),然后从时间线右键菜单中单击剪切帧 - 单击 NewAnimClip 命令 - 命名新元件和图层一些描述性的 - 单击新剪辑的第一帧并粘贴帧

瞧!您可以调整大小和重新定位的新剪辑,与原始时间线对齐!

于 2012-10-31T12:41:34.760 回答
0

To answer the original question, you can access the motion tween keyframes by using frame.getMotionObjectXML() and frame.setMotionObjectXML(). This XML contains the keyframe data you are looking for (the diamond keyframes).

于 2020-04-01T14:36:11.373 回答