我在动作脚本3中使用SWFAddress来控制导航和控件的网址,虽然我能够定位和更改特定参数,但我觉得我错过了更清晰,更一致的处理方式,甚至可能是一个功能或方法我不知道。
说我有一个网址,我想将 def 的第二个参数更改为 xyz 。
http://localhost/some-page/#/?param1=abc¶m2=def¶m3=ghi
改为
http://localhost/some-page/#/?param1=abc¶m2=xyz¶m3=ghi
我目前正在做:
if (SWFAddress.getParameterNames().indexOf("param2") >= 0) {
SWFAddress.setValue(SWFAddress.getPath() + "?"
+ SWFAddress.getQueryString().replace("param2=" + SWFAddress.getParameter("param2"), "param2=xyz"))
基本上,检查参数是否存在,检查其当前值是什么,然后使用 base ,'?"和查询重新创建整个网址,确保我将参数和替换为参数的值,确保我不会错过等号。如果这个参数存在但是没有设置为任何东西,或者是否存在等号以及其他一些陷阱,那么这很容易出错,并且容易出错。
那么,我不能告诉SWFAddress更新url中的那个参数? SWFAddress.setParam的理论函数(" param2," xyz")。
有没有人编写自己的方法来微操作SWFAddress和url,超出了他们为你提供的setValue(val:String)的单个函数?
答案 0 :(得分:0)
我认为简短的回答是否定的。根据{{3}},setParameter
方法没有getParameter
。查看代码,似乎URL没有作为类中的属性进行缓存,因此除了通过setValue
方法之外,不能对其进行操作,当然,这会更新浏览器中的URL。
可能您已经在onChange
事件中解析了URL,因此可以使用这些值来设置应用程序状态?如果是这样,当您在从Flash更新URL之前重新构建URL时,您不应该再次这样做。如果将深层链接属性存储在Model
类的某个位置,则可以处理默认,更新和错误检查,而无需采用String
操作。然后,您将使用这些属性重建URL,如果需要,您可以将该过程抽象为Model
类中的方法。
您还应注意,以下行不是特别健壮,因为它会对param22
和sparam2
等属性返回true:
if (SWFAddress.getParameterNames().indexOf("param2") >= 0) { }