JSFL:如何在Adobe Flash CS5中访问Motion Tween关键帧?

时间:2012-02-16 15:12:19

标签: flash flash-cs5 jsfl

我们的动画师在Adobe 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帧的菱形定义了动作。我想知道框架是否包含钻石并访问这些钻石中的数据。

2 个答案:

答案 0 :(得分:1)

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

我一直用它来: - 在我的新剪辑中选择我想要的所有帧(在多个图层上),然后单击时间轴右键菜单中的剪切帧 - 单击NewAnimClip命令 用描述性的东西来创造一个新的符号和层 - 在新剪辑的第一帧和粘贴帧中单击

瞧!一个新剪辑,您可以调整大小并重新定位,与原始时间轴对齐!

答案 1 :(得分:0)

要回答原始问题,可以使用frame.getMotionObjectXML()frame.setMotionObjectXML()访问补间关键帧。该XML包含您要查找的关键帧数据(菱形关键帧)。