2009-10-16 46 views
3

我有一个Flash动画,使用Actionscript 3和一些按钮打开新页面的链接。下面是我对重定向到新的页面代码:Actionscript 3中的相对URL

myButton.addEventListener(MouseEvent.CLICK, function(e:MounseEvent) { 
    var request:URLRequest = new URLRequest('http://www.example.com/page2.html'); 
    navigateToURL(request, "_top"); 
}); 

它工作正常,我有完整的URL包括域名生产服务器上,但是当我把它改成这样:

var request:URLRequest = new URLRequest('page2.html'); 

它不再适用于生产。我在这里错过了什么?我想不必将整个URL编码到电影中。

+0

.swf位于何处? – LiraNuna 2009-10-16 00:03:17

回答

11

URLRequests相对于包含它们(这不要紧,你的SWF是)的HTML文件,所以你需要考虑到这一点。 有嵌入/对象,您可以设置为改变这种行为的一个可选属性,在这里看到:

基地 - 。或[基本目录]或[URL]。指定用于解析Flash Player电影中的所有相对路径 语句的基本目录或 URL。 当您的Flash Player影片保存在 与您其他 文件不同的目录中时,此属性会有帮助。

http://kb2.adobe.com/cps/127/tn_12701.html

编辑: 另外,尽量避免使用绝对URL相对文件,你可以得到沙盒的错误,例如,加载网页时不...

1

尝试使用了/page2.html

1
“WWW”。

/page2.html应该像克里斯建议的那样正常工作。

另外,我经常为具有大量URL的较大项目做的一件事情就是创建一组全局链接函数,我可以在不同的启动环境之间进行切换。

我在哪里工作,我们在生产,临时和各种测试环境之间至少有4个或5个不同的环境,有时需要调整URL(例如,如果数据源处于分段而不是生产) 。

所以我会做出这样

MakeURL()更高级的功能

这也是我养活一个基本页面字符串,如“page2.html”和MakeURL功能会在网址前缀解析如http://staging.site.comhttp://alpha.site.com

这样,如果必须,我可以快速更改应用程序中的每个链接。

现在,除非您正在处理多种多样的环境,否则很少需要将整个URL放在那里。通常/page2.html会起作用,但我有时会使用该功能作为故障安全。

+0

这总是非常方便...在最近的一个项目中,我扩展了在测试和生产环境中添加带有版本号(?v = 1.0.3)的sufix以避免缓存不需要的文件的想法...这样一来,每次在合理的文件中改变了一些东西(可能会破坏使用旧文件的东西),我会更改版本号(作为主SWF的参数),因此用户将下载一组新的所有文件并将其缓存到下一个核心迭代。事实证明,这是非常有用的,特别是在与客户端检查更改时:) – Cay 2009-10-16 15:36:16