代码之家  ›  专栏  ›  技术社区  ›  Aximili

ActionScript 3:如何从URL获取主机名?

  •  4
  • Aximili  · 技术社区  · 16 年前

    我试图设置XML文件的路径,在本地或服务器上运行时会有所不同。

    如何确定闪存是否在本地运行?(我想检查URL是否包含“ http://localhost “但是如何获取窗口URL呢?)

    提前谢谢

    4 回复  |  直到 16 年前
        1
  •  6
  •   John Leidegren    16 年前

    您可以通过外部API向外部窗口(容器)询问此信息

    if (flash.external.available) // An external window is not always available
    {
        var win:* = flash.external.call("window.location"); // evaluate window.location
        // depending on browser there are several properties like 'host' you can use
        // to get the actual hostname
        // e.g. win.host == "localhost"
    }
    

    如果上述方法不起作用,则需要创建一个包装器函数,用于从JavaScript返回window.location对象。请注意,win对象上可用的属性完全由浏览器设置,并且在不同浏览器之间有所不同。这也意味着flash player(如果您在浏览器环境之外运行flash player托管的电影,则会得到该播放器)将不知道window.location属性,这在部署电影时有效,但在调试时无效)

    查看此处以了解更多信息

        2
  •  4
  •   David Hanak    16 年前

    url 应用程序对象的属性。可以从控制器树中的任何位置通过 parentApplication.url ,或者,如果对象不是控制器树的一部分, Application.application.url .

    对于纯AS3项目,您需要访问 loaderInfo 您的主精灵属性,例如。, _root.loaderInfo.url 我会给你同样的信息。

        3
  •  3
  •   James Hay    16 年前

    此问题的解决方案通常是将基本路径作为 FlashVar

    看看这个解决方案,了解如何将FlashVar传递到swf中

    http://blogs.adobe.com/pdehaan/2006/07/using_flashvars_with_actionscr.html

    在服务器上设置指向基本路径的flash var。差不多

    FlashVars="basePath=http://www.yourdomain.com/flash"
    

    然后在actionscript中,您可以检查此基本路径是否存在。如果没有,那么您知道您正在本地运行,因此您只使用您设置的在本地工作的相对路径。如果有一个basePath,那么在相对路径的前面加上前缀,并使用此URL加载xml。

        4
  •  1
  •   thgie    16 年前

    设置XML绝对相对路径:'/temp/data.XML'。这样,它将在以下位置搜索XML:' http://yourhost.com/temp/data.xml '.

    如果设置为“temp/data.xml”,它将始终相对于SWF搜索它。

    如果您感到高兴并且知道这一点,请选择data.xml。