我正在使用一个fla、一个as文件(文档类)和一个jsfl文件。swf是在WindowSWF文件夹中生成的(例如$flash/WindowSWF)
我有一个简单的windowSWF,我使用MMExecute和fl.runScript将变量从as3传递给jsfl。但是,我没想到如果我使用对象,我会遇到麻烦。
在我的windowSWF中,我有一个名为settingsGrid的DataGrid,它有以下列:“前缀”、“后缀”、“类型”,并且我尝试将settingsGrid.dataProvider.toArray()传递给jsfl脚本。
问题是它在另一边是没有定义的。有什么提示可以让我避开这件事吗?
简短的版本:如何将一个对象数组从actionscript传递到jsfl,比如{前缀:“value”,后缀:“value”,类型:“value”}。传递单个对象有效,传递数组时会出现错误:
"Syntax Error: missing ] after element list"我的函数调用如下所示:
MMExecute('fl.runScript(fl.configURI + "Commands/LazyGen.jsfl","generate","_",'+ settingsGrid.dataProvider.toArray() +');');jsfl文件中方法的签名如下所示:
function generate(prefixArg,settingsArg){}发布于 2009-07-13 09:59:56
我正在将对象从数据网格传递到JSFL。对象具有以下属性:键、替换和类型。下面是用于构造可以从actionscript在JSFL中传递的字符串的函数:
private function dataProviderToString(dataProvider:DataProvider):String{
var settingsString:String = '[';
for(var i:int = 0 ; i < dataProvider.length ; i++){
if(i < (dataProvider.length-1)) settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"},';
else settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"}';
}
settingsString += ']';
return settingsString;
}我注意到SWF中的设置没有神奇地保存,所以我使用本地SharedObject存储来自dataProvider的设置。我想我本可以使用FLfile编写一个文件,但我不想一直将数组转换为字符串并返回。我正在将DataProvider的数组( dataProvider.toArray() )写到一个ByteArray中,当我需要它时,我会将它读回来并插入到一个新DataProvider的构造函数中。
发布于 2010-07-02 21:40:14
只需在windowsSWF中计算变量值,并通过MMExecute命令将变量传递到JSFL。
以下命令将工具栏中的填充颜色设置为黑色。因此,例如,颜色的值可以从颜色选择器组件中抓取,然后传递给jsfl。我所做的就是将变量从动作脚本连接到通过MMExecute发送的字符串中。
var myColor:String = "#000000";
MMExecute("var fill = fl.getDocumentDOM().getCustomFill(\"toolbar\");fill.style= \"solid\";fill.color = \'"+myColor+"\';fl.getDocumentDOM().setCustomFill( fill );");https://stackoverflow.com/questions/1039280
复制相似问题