flex接受参数
关于flex如何向某个页面传递参数,我以前有这方面的笔记,
flex通过非AmfPHP途径与后台交互中URLLoader+URLRequest+URLVariables方法也可以用于向flex页面传参数。后台php端接收参数很简单,现在讨论一下flex端如何处理页面url传递过来的参数。
网上这方面文章不少,不过都多少有些问题,我总结一下,写在这里。 方法一: flex接收网页传值!~ ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10 11 12 13 14 15 16 17 18 19 20 21 这样做确实没有问题,但平时的flex程序都是以html为容器将swf文件包装了起来。如果用test.html?serverURL=String&port=String的方式传递参数,再用该文章中提供的代码就不能获取参数了。 方法二: flex 3 从页面url中取参数取值的完美解决方案 这个方法是园子里的人提出的。 当通过http://xxxxx/xxx.mxml?name=hermit或http://xxxxx/xxx.swf?name=hermit时,可以直接调用this.parameters.name在flex里面取url参数。 当通过http://xxxxx/xxx.html?name=hermit时则需要修改js文件才可以继续使用this.parameters.name 页面中加入js方法
??
function
?getparafromurl()?{ 在?AC_FL_RunContent中加入
???? var ?url,pos,parastr,para; ????url? = ?window.location.href; ????pos? = ?url.indexOf( " ? " ) ????parastr? = ?url.substring(pos + 1 ); ???? return ?parastr; ?}
"
FlashVars
"
,?getparafromurl()
如果页面是flex builder 通过模板自动生成的
那么需要在index.template.html文件中加入上面的代码. 但是如果希望js被禁用的时候,flex依然能工作 则需要把……感兴趣的同学查看原文吧,不太推这种方法。 方法三: flex程序如何获取html容器传递的URL参数值 本方法比较成熟了,把原理讲的也很清楚。 我们经常在Flex程序需要用从外部html向swf文件传递参数,(类似 test.html?name=jex&address=chengdu 地址中问号后面的参数对值) 首先要明确的是,一般我们在使用Flex Builder进行Flex开发时,编译后自动以html容器将swf文件包装起来了,所以一般来说,我们直接运行的是html,而非直接运行生成的 swf文件。而Flex应用程序要获取外部html容器传入的参数,通常是用JavaScript来获取到相应参数,再让javaScript传递给 ActionScript。 在Flex应用程序中,我们通常要用到ExternalInterface类,ExternalInterface主要用来让 ActionScript直接与Flash Player容器进行通信。ExernalInterface类通常作为ActionScript与JavaScript进行通信的桥梁。 为了获取从html传入的URL参数,通常传递的顺序是:html容器—>JavaScript—>ExternalInterface—>ActionScript 具体实现: ExternalInterface.call("JavaScript函数"); 在JS中,Window对象用来代表一个Web浏览器窗口,而窗口的Location对象则代表了当前显示的URL,于是,要想获取URL中的参数, 通常使用下面的语句: window.location.href.toString? //得到URL的完整文本 ? window.location.search.substring //得到问号后面部分的URL文本 注:这里window属性引用的Window对象自身,而Window对象的location属性引用的是Location对象。
1?
for
(var?obj:Object?in?args){
这其中遇到了object对象的取值问题,参考了:
Flex学习--Object&&String
2? ????dispID.text? += ?obj.toString() + ' : ' + args[obj.toString()] + ' n ' ; 3? } 创建Object的方法很简单,你可以使用new操作符定义一个Object,如下所示: var obj:Object = new Object(); obj.name = “flex”; obj.version = “2”; 这里,我们生成了一个新Object对象obj,它有两个属性name和version。当然,我们也可以通过赋初值的方式直接定义Object对象: var obj:Object = {name: ”flex”,version: “2”} 可能你已经看到,Object正是FLEX中的关联数组(对应于Java中的Map)。在上面的示例中,obj对象共定义了两组键、值对,它们分别是(键:na var myAssocArray:Object = {fname:"John",lname:"Public"}; trace(myAssocArray.fname); ? ? // Output: John trace(myAssocArray["lname"]); // Output: Public myAssocArray.initial = "Q"; trace(myAssocArray.initial); ? // Output: Q(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |