0

我正在用 Flex 和 Extendscript 在 Photoshop 中开发一个面板。我已经很接近让它工作了,但是凭借我的 Flex 技能,我从 jsx 文件中提取的 Array 遇到了一点问题。该数组在警报框中显示得很好,但是在我的拆分和创建新集合之间的某个地方出了点问题。感谢您对此的任何帮助。

这是我的 Flex

protected function loadData():void {
    var grabFolderNames:SyncRequestResult = CSXSInterface.instance.evalScript("labNames");
    var list:String = grabFolderNames.data;
    var array:Array = list.split(",");
    var arrayCollection:ArrayCollection = new ArrayCollection();
    arrayCollection.source = array;
    labFolderList.dataProvider = arrayCollection;
}

这是jsx

function labNames() {
  var labs = ["Red", "Green", "Blue", "Purple", "Yellow"];
    alert("This function is firing" + labs);
}
4

2 回答 2

0

1)您应该修改您的 labNames() 方法以返回数组:

function labNames() {
    var labs = ["Red", "Green", "Blue", "Purple", "Yellow"];
    return labs;
}

2) 确保在您的 flex 对象的 HTML Wrapper 中拥有allowScriptAccess="always"(或allowScriptAccess="sameDomain")以启用 javascript/Flex 通信。

3)如果还是不行,更换

var grabFolderNames:SyncRequestResult = CSXSInterface.instance.evalScript("labNames");

经过:

var obj:* = CSXSInterface.instance.evalScript("labNames");

然后在该行上放一个断点,看看“obj”是否填充了一些数据并在此处报告结果。

希望有帮助。

于 2012-03-07T21:37:32.130 回答
0

我对 CSXSInterface 不熟悉,但由于labNames()只是在警报中显示字符串,而不是将其作为字符串返回,因此grabFolderNames.data可能不包含您期望它包含的内容。为什么不用调试器检查它的值呢?

于 2012-03-07T08:35:13.567 回答