jsfl:访问符号以在其中设置动画

Posted

技术标签:

【中文标题】jsfl:访问符号以在其中设置动画【英文标题】:jsfl: accessing a symbol to animate inside it 【发布时间】:2019-06-26 20:21:58 【问题描述】:

我在舞台上有几个符号,矩形和圆形。 symbols on stage 我想进入圆圈并使用 jsfl 为其中的符号设置动画。我看到了这个链接Accessing child/nested movie clips with JSFL AS3 CS5.5 并基于此我编写了此代码。

fl.outputPanel.clear();
var dom = fl.getDocumentDOM();
var tl = dom.getTimeline();
var curFrame = tl.currentFrame;
var curLayer = tl.findLayerIndex('Layer 2');

tl.setSelectedFrames(curFrame,curFrame);
dom.selection = [tl.layers[curLayer].frames[curFrame]];
//dom.enterEditMode('inPlace');

var tle = dom.timelines[0];
var elm = tle.layers[curLayer].frames[curFrame].elements[0];
var lt = elm.libraryItem;
var ctl = lt.tle;//????
fl.trace(ctl.layers[curLayer].frames[curFrame].elements);

现在我想我一定是捆绑了一些东西,因为我得到了这个“类型错误:ctl 没有属性”。 the error message 请帮助我提出如何实现我想要的建议。在此先感谢

【问题讨论】:

【参考方案1】:

当您设置var tle=dom.timelines[0]; 时,实际上是在说“让我从现在开始使用tle 代替dom.timelines[0]。”

所以错误信息告诉你这个东西不存在:dom.timelines[0].layers[curLayer].frames[curFrame].elements[0].libraryItem.tle

这是正确的。 libraryItem 是 [SymbolItem] 类型的对象,并且 SymbolItems 没有名为 tle 的子项。虽然他们确实有一个叫timeline 的孩子,这很可能是你想要的。

此外,最后一个 trace 语句并不代表您的预期,因为您位于 ctl 时间线而不是 tl 时间线中。对于测试,您可能需要从fl.trace(ctl.layers[0].frames[0].elements);开始

参考文档在这里: https://help.adobe.com/archive/en_US/flash/cs5/flash_cs5_extending.pdf

【讨论】:

以上是关于jsfl:访问符号以在其中设置动画的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSFL AS3 CS5.5 访问子/嵌套影片剪辑

替换 JSFL 中的填充颜色

如何在 JSFL 中获得符号的描边边界?

JSFL - 更改静态文本值

[Flash]JSFL-将当前层中的符号转换为位图

JSFL:检测元素何时被翻转