2012-03-07 55 views
0

我正在用Flex和Extendscript在Photoshop中開發一個面板。我相當接近這個工作,但與我的Flex技能,我有一個問題,我從jsx文件拉入陣列。該數組在警告框中顯示正常,但在我的分割和創建新集合之間的某處出現了問題。感謝您的幫助。Flex - 用arrayCollection填充Combobox與來自javascript的數據

這裏是我的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

1)您應修改您的labNames()方法返回數組:

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

2)確保在HTML包裝爲Flex對象,你才能啓用JavaScript有allowScriptAccess="always"(或allowScriptAccess="sameDomain")/Flex通信。

3)如果仍然無法正常工作,更換

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

由:

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

然後把一個斷點上線,看看是否「目標文件」是由一些數據和填充報告結果在這裏。

希望有所幫助。

+0

確實,謝天謝地。所有ArrayCollections都必須作爲對象處理。謝謝 – Bungdaddy 2012-03-07 23:53:06

0

我不熟悉的CSXSInterface,但由於labNames()只是顯示警報的字符串,不返回它作爲字符串,grabFolderNames.data可能不包含您期望它包含的內容。你爲什麼不用調試器檢查它的值?

相關問題