首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将对象从windowSWF传递给JSFL?

如何将对象从windowSWF传递给JSFL?
EN

Stack Overflow用户
提问于 2009-06-24 15:58:38
回答 2查看 2.3K关注 0票数 1

我正在使用一个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”}。传递单个对象有效,传递数组时会出现错误:

代码语言:javascript
复制
"Syntax Error: missing ] after element list"

我的函数调用如下所示:

代码语言:javascript
复制
MMExecute('fl.runScript(fl.configURI + "Commands/LazyGen.jsfl","generate","_",'+ settingsGrid.dataProvider.toArray() +');');

jsfl文件中方法的签名如下所示:

代码语言:javascript
复制
function generate(prefixArg,settingsArg){}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-13 09:59:56

我正在将对象从数据网格传递到JSFL。对象具有以下属性:键、替换和类型。下面是用于构造可以从actionscript在JSFL中传递的字符串的函数:

代码语言:javascript
复制
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的构造函数中。

票数 2
EN

Stack Overflow用户

发布于 2010-07-02 21:40:14

只需在windowsSWF中计算变量值,并通过MMExecute命令将变量传递到JSFL。

以下命令将工具栏中的填充颜色设置为黑色。因此,例如,颜色的值可以从颜色选择器组件中抓取,然后传递给jsfl。我所做的就是将变量从动作脚本连接到通过MMExecute发送的字符串中。

代码语言:javascript
复制
var myColor:String = "#000000";
MMExecute("var fill = fl.getDocumentDOM().getCustomFill(\"toolbar\");fill.style= \"solid\";fill.color = \'"+myColor+"\';fl.getDocumentDOM().setCustomFill( fill );");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1039280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档