我正在用Flash CS5的JSFL编写脚本,并且试图从主要时间轴中获取图层列表。我正在获取时间轴,然后使用for ... in循环遍历所有时间,但是我得到的对象似乎未定义。这是我做的一些测试代码:
alert(fl.getDocumentDOM().getTimeline().layers[0].name); //Returns "text1"
for(layer in fl.getDocumentDOM().getTimeline().layers) {
alert(layer.name); //Returns "undefined"
}
那么,JSFL不支持...输入吗?这有点奇怪,因为它似乎只是一个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/