Actionscript中的相对URL 3

时间:2009-10-16 00:02:04

标签: flash actionscript-3

我有一个使用Actionscript 3的flash电影,其中包含一些打开新页面链接的按钮。这是我重定向到新页面的代码:

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

它在我的生产服务器上运行时使用包含域名的完整网址,但是当我将其更改为:

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

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

3 个答案:

答案 0 :(得分:11)

URLRequests是相对于包含它们的HTML文件(与SWF的位置无关),因此您需要考虑这一点。 您可以设置EMBED / OBJECT的可选属性来更改此行为,请参见此处:

  

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

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

编辑: 此外,尽量避免使用相对文件的绝对URL,因为您可能会收到沙盒错误,例如,加载没有“www。”的网页......

答案 1 :(得分:1)

尝试使用/page2.html

答案 2 :(得分:1)

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

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

在我工作的地方,我们在生产,登台和各种测试环境之间至少有4到5个不同的环境,有时URL必须进行调整(例如,如果数据源正在升级而非生产)。

所以我会做一个像

这样的高级功能

MakeURL()

我会提供一个基页字符串,例如“page2.html”,而MakeURL函数会解析一个URL前缀,例如http://staging.site.comhttp://alpha.site.com

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

现在,除非您正在使用多种不同的环境,否则很少需要将整个URL放在那里。通常/page2.html会起作用,但我有时会使用该函数作为故障保护。