| //初始化一个字符串形式的方法parseStringToJs,用于将字符串转换为js语言
 var str:String = "function parseStringToJs(str){var oHead = document.getElementsByTagName('HEAD').item(0);";
 str+="var oScript = document.createElement("script");";
 str+="oScript.language = "javascript";";
 str+="oScript.type = "text/javascript";";
 str+="oScript.id = "test";";
 str+="oScript.defer = true;";
 str+="oScript.text = str;";
 str+="oHead.appendChild(oScript);}";
 //调用window.eval方法
 ExternalInterface.call("eval",str);
 var includeStream:IncludeStream=new IncludeStream();
 //获取js的字符串形式的源代码
 var strey:String=includeStream.toString();
 //使用正则表达式修改字符串
 var char:RegExp = //g;
 strey = strey.replace(char,"\");
 //生成js的API
 ExternalInterface.call("parseStringToJs",strey);
 //初始化js调用as的入口方法initBridgeJsToFlex,最终饭方法的实现转给方法ApplicationManager.initBridgeJsToFlex
 ExternalInterface.addCallback("initBridgeJsToFlex",ApplicationManager.initBridgeJsToFlex);
 
 注释已经写的很清楚了,不过正则表达式这一步可以不要,我这里是因为我的代码里出现了反斜杠的东西,所以我这样是为了转义一下,这里的思路就是先使用ExternalInterface.call去调用window对象的方法eval在window下创建一个将字符串转化为js代码的方法parseStringToJs,然后再调用此方法将我们的字符串的源代码进行转化,这样html中就存在js的代码了,就不用再去修改index.template.html文件添加引用和添加入口了。并且在其他地方你可以通过ExternalInterface.call直接调用js端公开的桥,并且通过ApplicationManager.initBridgeJsToFlex来接收js的回调函数,这样我们只需要添加swc这个包就可以使用js的所用功能。
 其实我也不想使用eval的,eval是很消耗性能的,我的源代码长度大概是8万多,还好,没见卡,我也只会这种方法,不要拿板砖拍我哦!有其他办法的朋友告诉我哦!期望对某些人有帮助吧! (编辑:锡盟站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |