我正在寻找可以选择框架上的所有项目并删除与特定颜色相匹配的所有笔触的JSFL功能,例如#0000FF

基本上,我使用红色铅笔笔划的铅笔工具做了很多笔记。但是,当我完成时,我只想告诉Flash从屏幕上删除我所有的红色stokes,并保持其他所有内容。有什么解决方案吗?

有帮助吗?

解决方案

好问题 !

查看JSFL文档中的文档对象,我看到的唯一可以通过document.getCustomStroke()来检索中风的唯一方法。理想情况下,形状对象会存储中风并填充信息,但没有:(

我试图使用数组来控制选择:

var doc = fl.getDocumentDOM();
doc.selectAll();
var s = new Array().concat(doc.selection);
var sl = s.length;
doc.selectNone();

for(var i = 0; i < sl ; i++){
   doc.selection = s[i];
   stroke = doc.getCustomStroke('selection')
   fl.trace(stroke.color)
}

那没用。

然后我尝试使用

doc.mouseClick({x:s[i].x, y:s[i].y}, false, false);

但这并不是很有帮助,因为音符可以采用任何形状,因此在纸币左上角单击可能是错过的选择。遍历每个像素以获得选择是行不通的。

简短的答案不是因为检索冲程颜色的唯一方法是通过文档选择。

但是有一些解决方法:

  1. 在IDE中,使用查找并替换,选择颜色代替文本,然后用透明的东西替换笔记颜色。不幸的是,这不是一个解决方案。它只会隐藏笔记,而不是删除它们。flash find and replace
    (来源: sonic.net)

  2. 使从JSFL获取注释很容易:将所有注释在当前时间轴中放入一层中,并给它一个暗示的名称,例如“ _notes”,然后删除该层。

例如

var doc = fl.getDocumentDOM();
if(!doc) alert('Pardon me! There is no document open to work with.');

fl.trace(deleteLayerByName('_notes'))

/*Returns true if the layer was found and deleted, otherwise returns false*/
function deleteLayerByName(name){
    var timeline  = doc.getTimeline();
    var frame     = timeline.currentFrame;
    var layers    = timeline.layers;
    var layersNum = layers.length;
    for(var i = 0 ; i < layersNum; i++){
        if(layers[i].name == name){
            timeline.deleteLayer(i)
            return true;
        }
    }
    return false;
}

希望有人可以在JSFL中使用颜色选择对象。在IDE中,您可以做很多事情,但是 无法从JSFL做它们 :(

Hth

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top