gpt4 book ai didi

javascript - 替换 JSFL 中的填充颜色

转载 作者:行者123 更新时间:2023-11-29 19:39:05 24 4
gpt4 key购买 nike

我正在尝试编写一个 JSFL 脚本,该脚本将替换与选定帧上给定颜色匹配的所有轮廓填充。

我的问题是,如果我按照 JSFL 文档的规定调用 shape.beginEdit() 和 shape.endEdit(),每当我访问轮廓上的填充属性(即使是只读访问)时,脚本就会崩溃。错误消息是“发生以下 JavaScript 错误:”,没有其他信息。

如果我省略 shape.begin/endEdit() 调用,脚本不会崩溃,但实际上不会更新颜色。

我已尝试在 Flash CS5.5、CS6 和 CC 中运行此脚本,结果相同。

如果有人能指出我遗漏的内容,我将不胜感激。

脚本:

var replaceFills = {
'#ff0000': '#33cccc',
'#33cccc': '#ff0000',
'#66ff00': '#00ffff',
'#00ffff': '#66ff00',

'#2173a6': '#ff00ff',
'#ff00ff': '#2173a6',

'#195480': '#ff00ff',
'#ff00ff': '#195480',
};

function recolor(element) {
if (element.elementType == "shape") {
element.beginEdit();

for (var j = 0; j < element.contours.length; j++) {
var c = element.contours[j];
if (c.interior && c.fill) {
if (c.fill.style == 'solid') {
if (c.fill.color in replaceFills) {
c.fill.color = replaceFills[c.fill.color];
}
}
}
}
element.endEdit();
}
}

function recolorFrame(frame) {
var elements = frame.elements;
for (var i = 0; i < elements.length; i++)
recolor(elements[i]);
}


var curSelected = fl.getDocumentDOM().getTimeline().getSelectedFrames();

for (var i = 0; i < curSelected.length; i += 3) {
var layerIndex = curSelected[i];
var startIndex = curSelected[i + 1];
var endIndex = curSelected[i + 2];

var layer = fl.getDocumentDOM().getTimeline().layers[layerIndex];

for (var j = startIndex; j < endIndex; j++) {
var frame = layer.frames[j];
if (j == frame.startFrame)
recolorFrame(frame);
}
}

最佳答案

像这样编辑你的函数:

function recolor(element) {
if (element.elementType == "shape") {
//del element.beginEdit();

for (var j = 0; j < element.contours.length; j++) {
var c = element.contours[j];
if (c.interior && c.fill) {
if (c.fill.style == 'solid') {
if (c.fill.color in replaceFills) {
//del c.fill.color = replaceFills[c.fill.color];
//add this
var fill = element.getCustomFill();
fill.style = "solid";
fill.color = replaceFills[c.fill.color];
element.setCustomFill(fill);
//end
}
}
}
}
//del element.endEdit();
}
}

关于javascript - 替换 JSFL 中的填充颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24067556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com