ActionScript 3: Как получить имя хоста из URL? - PullRequest
4 голосов
/ 16 февраля 2009

Я пытаюсь указать путь к файлу XML, который отличается при локальном запуске или на сервере.

Как определить, работает ли Flash локально? (Я думаю, чтобы проверить, содержит ли URL "http://localhost", но как вы получаете URL окна?)

Заранее спасибо

Ответы [ 4 ]

6 голосов
/ 16 февраля 2009

Вы можете запросить эту информацию во внешнем окне (контейнере) через внешний 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"
}

Если описанный выше метод не работает, вам нужно создать функцию-оболочку для возврата этого объекта window.location из JavaScript. Обратите внимание, что свойства, доступные в объекте win, полностью задаются браузером и различаются в разных браузерах. Это также означает, что Flash Player (который вы получаете, если вы запускаете фильм, размещенный на Flash Player вне среды браузера, не будет знать о свойстве window.location, это работает при развертывании фильма, но не при отладке) *

Проверьте здесь для получения дополнительной информации

4 голосов
/ 16 февраля 2009

Если ваше приложение является приложением Flex, вы можете получить URL основного SWF-файла через атрибут url объекта вашего приложения. Доступ к нему можно получить из любого места в дереве контроллеров через parentApplication.url или, если объект не является частью дерева контроллеров, Application.application.url.

Для простых проектов AS3 вам необходим доступ к атрибуту loaderInfo вашего основного спрайта, например, _root.loaderInfo.url даст вам ту же информацию.

3 голосов
/ 16 февраля 2009

mokee прав в том, что вам нужно указать относительный путь для доступа к вашему XML при локальном запуске. Вы также должны соответствовать этой структуре папок где-нибудь на сервере. Однако часто существует необходимость прикрепить различные базовые пути перед этим относительным путем, чтобы указывать на конкретные версии этих папок. Например, у нас часто есть несколько разных сред в нашем агентстве. сборки, тестирование серверов, различные живые среды. Вам не нужно жестко их кодировать, кроме того, вам нужен какой-то способ определить, какой из них на самом деле используется.

Решением этой проблемы часто является передача basePath как FlashVar

Посмотрите на это решение, как передать FlashVar в ваш SWF

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

Установите флэш-переменную, указывающую на basePath на вашем сервере. Что-то вроде

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

Затем в ActionScript вы можете проверить, существует ли этот basePath. Если это не так, то вы знаете, что работаете локально, поэтому вы используете только заданный вами относительный путь, который работает локально. Если есть basePath, добавьте его в начало вашего относительного пути и загрузите xml, используя этот URL.

Это очень распространено и работает очень хорошо.

1 голос
/ 16 февраля 2009

Установите путь к вашему абсолютному относительному XML: «/temp/data.xml». Например, он будет искать XML по адресу: 'http://yourhost.com/temp/data.xml'.

Если для него установлено значение «temp / data.xml», он всегда будет искать его относительно SWF.

если вы счастливы и знаете это, data.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...