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

Posted

技术标签:

【中文标题】JSFL:如何在 Adob​​e Flash CS5 中访问 Motion Tween 关键帧?【英文标题】:JSFL: how to access Motion Tween keyframes in Adobe Flash CS5? 【发布时间】:2012-03-07 23:55:02 【问题描述】:

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

保罗

【问题讨论】:

她不能把所有这些都嵌套到一个可以轻松重新定位的影片剪辑中吗?如果所有动画都在文档的根目录中,她仍然应该能够将所有内容(使用编辑多帧)复制到一个空的影片剪辑中。 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于JSFL:如何在 Adob​​e Flash CS5 中访问 Motion Tween 关键帧?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Adob​​e Flash Professional CS6 Action Script 3.0 中阻止可移动对象(通过箭头键移动)离开舞台

将 Adob​​e Flash Pro CS6 更新到最新的 Flash Player 23?

如何创建由 xml 文件驱动的 Adob​​e Flash cs6 Actionscript 3 rtmp 视频播放器?

在 Adob​​e Flash CS3 Actionscript 中拖动多个项目

在 ExtendScript for Flash CS5 中调试 jsfl

如何使用 Flash JavaScript 文件 (.jsfl) 将库中的对象添加到舞台?