我们的动画师在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帧的菱形定义了动作。我想知道框架是否包含钻石并访问这些钻石中的数据。
保
答案 0 :(得分:1)
有一个Flash扩展,完美地称为New Anim Clip - 你可以在Toon Monkey上找到它:http://toonmonkey.com/extensions.html
我一直用它来: - 在我的新剪辑中选择我想要的所有帧(在多个图层上),然后单击时间轴右键菜单中的剪切帧 - 单击NewAnimClip命令 用描述性的东西来创造一个新的符号和层 - 在新剪辑的第一帧和粘贴帧中单击
瞧!一个新剪辑,您可以调整大小并重新定位,与原始时间轴对齐!
答案 1 :(得分:0)
要回答原始问题,可以使用frame.getMotionObjectXML()
和frame.setMotionObjectXML()
访问补间关键帧。该XML包含您要查找的关键帧数据(菱形关键帧)。