Javascript Array, Перезаписывая предыдущий цикл данных - PullRequest
0 голосов
/ 03 мая 2019

При возникновении проблемы прохождения цикла по всему массиву вместо простого поиска правильного числа и остановки.

Если код видит (curOpacity) 100, он должен вывести 61. Вместо этого он выдает 12. То же самое относится и к любому значению выше 12. Я вижу, что в массиве 12 равное значение равно 12, что и было бы прекратить цикл.

Это работает в Illustrator.

Я пытался сделать обратный цикл, но, похоже, это тоже не сработало.

function opacitychange()
{
    var docRef = app.activeDocument;  
    var layers = docRef.layers;  
    var paths = docRef.pathItems;  
    var pathLen = paths.length;  

        var opacityRelationships = {
        "100": 61,"99": 61,"98": 61,"97": 60,"96": 60,"95": 59,"94": 59,"93": 58,"92": 57,"91": 57,"90": 57,"89": 56,"88": 56,"87": 56,"86": 55,"85": 55,"84": 55,"83": 54,"82": 54,"81": 54,"80": 53,"79": 53,"78": 53,"77": 52,"76": 52,"75": 52,"74": 51,"73": 51,"72": 50,"71": 50,"70": 49,"69": 49,"68": 48,"67": 48,"66": 47,"65": 47,"64": 46,"63": 46,"62": 45,"61": 45,"60": 44,"59": 43,"58": 42,"57": 41,"56": 40,"55": 39,"54": 38,"53": 37,"52": 36,"51": 35,"50": 34,"49": 34,"48": 34,"47": 33,"46": 33,"45": 33,"44": 32,"43": 32,"42": 31,"41": 31,"40": 30,"39": 30,"38": 29,"37": 29,"36": 28,"35": 27,"34": 27,"33": 26,"32": 26,"31": 25,"30": 25,"29": 24,"28": 23,"27": 22,"26": 21,"25": 20,"24": 19,"23": 18,"22": 17,"21": 16,"20": 15,"19": 15,"18": 14,"17": 14,"16": 13,"15": 13,"14": 12,"13": 12,"12": 12,"11": 11,"10": 10,"9": 9,"8": 8,"7": 7,"6": 6,"5": 5,"4": 4,"3": 3,"2": 2,"1": 1,"0": 0
        }
    function updateOpacityGradient(item)  
    {  
        var stops = item.fillColor.gradient.gradientStops;  
        var curOpacity;
        for (var x = 0, len = stops.length; x < len; x++)  
        {  
            curOpacity = Math.floor(stops[x].opacity);
            stops[x].opacity = opacityRelationships[curOpacity];   
        }  
    }  

    for (var i = 0; i < pathLen; i++)  
    {   
        if (paths[i].filled && paths[i].fillColor == "[GradientColor]")  
        {  
            updateOpacityGradient(paths[i]);  
        }  
    }  

}opacitychange();
...