1

我在 actionscript 3 中使用 SWFAddress 来控制导航和控件的 url,虽然我能够定位和更改特定参数,但我觉得我缺少一种更清晰、更一致的处理方式,甚至可能是我的一个功能或方法我不知道。

假设我有一个 url,我只想将def的第二个参数更改为xyz

http://localhost/some-page/#/?param1=abc&param2=def&param3=ghi变成 http://localhost/some-page/#/?param1=abc&param2=xyz&param3=ghi

我目前正在做:

if (SWFAddress.getParameterNames().indexOf("param2") >= 0) {
    SWFAddress.setValue(SWFAddress.getPath() + "?"
       + SWFAddress.getQueryString().replace("param2=" + SWFAddress.getParameter("param2"), "param2=xyz"))

本质上,检查参数是否存在,检查它的当前值是什么,然后使用base、'?" 和query重新创建整个 url ,确保我替换了参数参数的值,确保我不会错过equal sign . 这个 get 很草率,如果参数存在但没有设置任何东西,或者是否有等号,以及许多其他陷阱,则容易出错。

那么,我不能只告诉 SWFAddress 更新 url 中的那个参数吗?SWFAddress.setParam("param2, "xyz") 的一个理论函数。

除了他们为您提供的 setValue(val:String) 的单个函数之外,是否有人编写了自己的方法来微操作 SWFAddress 和 url?

4

1 回答 1

0

我认为简短的回答是否定的。根据文档setParameter,该方法不适用getParameter。查看代码,似乎 URL 没有作为属性缓存在类中,因此只能通过setValue更新浏览器中的 URL 的方法进行操作。

大概您已经在您的onChange事件中解析 URL,以便您可以使用这些值来设置您的应用程序状态?如果是这样,当您在从 Flash 更新 URL 之前重建 URL 时,您不需要再次这样做。如果您将深层链接属性存储在某个Model类上,您可以处理默认设置、更新和错误检查,而无需求助于String操作。Model然后,您将使用这些属性重建 URL,如果需要 ,您可以将这个过程抽象为类中的方法。

您还应该注意,以下行不是特别健壮,因为它将为诸如param22and之类的属性返回 true sparam2

if (SWFAddress.getParameterNames().indexOf("param2") >= 0) { }
于 2012-10-22T23:05:23.690 回答