我正在 JSFL 中为 Flash CS5 编写一个脚本,并且我正在尝试获取主时间轴之外的图层列表。我正在获取时间线,然后使用 for...in 循环遍历所有内容,但我获取的对象似乎未定义。这是我编写的一些测试代码:
alert(fl.getDocumentDOM().getTimeline().layers[0].name); //Returns "text1"
for(layer in fl.getDocumentDOM().getTimeline().layers) {
alert(layer.name); //Returns "undefined"
}
那么,JSFL 不支持...in 吗?这有点奇怪,因为它看起来只是一个 JavaScript 引擎。
最佳答案
哇哦。 JSFL 不仅仅是一个 JavaScript 引擎,它还是一个非常难以预测的奇怪的 JavaScript 世界。不相信我?不确定情况是否仍然如此,但请尝试 fl.getDocumentDOM().selection.push(<obj>)
。它不起作用,但这样做了:var s = fl.getDocumentDOM().selection; s.push(<obj>) fl.getDocumentDOM().selection = s
.
也就是说,你的语法已经关闭:
var layers = fl.getDocumentDOM().getTimeline().layers;
// include 'var' it's good taste
for(var layer in layers) {
// for... in iterates the KEYS, so you actually have to do a lookup
alert(layers[layer].name);
}
顺便说一句,您最好迭代具有数字索引的数组,这样更清晰、更快。
关于javascript - JSFL for...in 循环似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632389/