简体   繁体   English

函数到 JS 和 JSX 文件之间的通信问题

[英]Communication issue between functions into JS and JSX files

I have made this function into a JS file...我已经把这个function变成了一个JS文件...

function getColors(isPick, isForecolor)
{
    var chosenFunction = 'getColor(' + isPick + ', ' + isForecolor + ')';
    csInterface.evalScript(chosenFunction, function(result)
    {
        if(result !== 'undefined')
        {
            if (isForecolor == true){
                foregroundHexColor = result;
                // etc...
            }
            else
            {
                backgroundHexColor = result;
                //etc..
            };
        };
    });
};

which get a hexadecimal color value from this function from a JSX file.它从JSX文件中的function获取十六进制颜色

function getColor(isPick, isForecolor)
{
    var color_PickerCase;
    var decimal_Color;
    var hexadecimal_Color;

    if (isForecolor == true)
    {
        color_PickerCase = app.foregroundColor.rgb.hexValue;
    }
    else
    {
        color_PickerCase = app.backgroundColor.rgb.hexValue;
    };

    if (isPick == true)
    {
        if (app.showColorPicker(isForecolor)){
            decimal_Color = color_PickerCase;
            hexadecimal_Color = decimal_Color.toString(16);
        }
        else
        {
            return;
        };
    }
    else
    {
        decimal_Color = color_PickerCase;
        hexadecimal_Color = decimal_Color.toString(16);
    };

    return hexadecimal_Color;    
};

In some way it works, but for some reason I have to do the same thing two times so to get the value?!!在某种程度上它有效,但由于某种原因,我必须两次做同样的事情才能获得价值?! Any idea why is this happening?知道为什么会这样吗?

Thank you for your time!!!感谢您的时间!!!

UPDATE : A correction, it works only at first click.更新:更正,它只在第一次点击时起作用。 Then needs to clicked two times so to get the value!!!然后需要点击两次才能获得价值!!!

Well, here is the solution...好吧,这是解决方案...

function getColor(isPick, isForecolor)
{
    var color_PickerCase;
    var decimal_Color;
    var hexadecimal_Color;

    if (isPick === true && app.showColorPicker(isForecolor) === false)
    {
            return;
    }

    if (isForecolor === true)
    {
        color_PickerCase = app.foregroundColor.rgb.hexValue;
    }
    else
    {
        color_PickerCase = app.backgroundColor.rgb.hexValue;
    }

    decimal_Color = color_PickerCase;
    hexadecimal_Color = decimal_Color.toString(16);
    return hexadecimal_Color;    
};

As joojaa from graphicdesign said, I was asking for the color before picking it and I was getting the color form the last time!!!正如来自平面设计joojaa所说,我在挑选颜色之前询问了颜色,而我最后一次得到了颜色表!!!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM