我正在使用Flex和Extendscript在Photoshop中开发一个面板。我非常接近让这个工作,但凭借我的Flex技能,我对从jsx文件中提取的数组有一点问题。数组在警告框中显示正常,但在我的拆分和创建新集合之间的某处是错误的。感谢您的帮助。
这是我的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);
}
答案 0 :(得分:0)
我不熟悉CSXSInterface但是,由于labNames()
只是在警告中显示字符串,并且不将其作为字符串返回,grabFolderNames.data
可能不包含您希望它包含的内容。为什么不用调试器检查它的值?
答案 1 :(得分:0)
1)您应该修改labNames()方法以返回数组:
function labNames() {
var labs = ["Red", "Green", "Blue", "Purple", "Yellow"];
return labs;
}
2)确保您的flex对象的HTML包装器中有allowScriptAccess="always"
(或allowScriptAccess="sameDomain"
),以便启用javascript / Flex通信。
3)如果仍然无效,请替换
var grabFolderNames:SyncRequestResult = CSXSInterface.instance.evalScript("labNames");
由:
var obj:* = CSXSInterface.instance.evalScript("labNames");
然后在该行上设置一个断点,看看“obj”是否由某些数据填充并在此处报告结果。
希望有所帮助。