2009-02-16 2 views
4

Я пытаюсь установить путь к XML-файлу, который отличается при запуске локально или на сервере.ActionScript 3: Как получить имя хоста из URL?

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

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

ответ

3

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

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

Взгляните на это решение о том, как передать FlashVar в ваш SWF

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

Настройка flash var, указывающий на basePath на вашем сервере. Что-то вроде

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

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

Очень часто это делается и работает очень хорошо.

+0

Отлично! Спасибо Джеймс – Aximili

6

Вы можете задать внешнее окно (контейнер) для этой информации через внешние API

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

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

1

Установите путь к XML абсолютного относительный: '/temp/data.xml'. Таким образом, он будет искать XML по адресу: 'http://yourhost.com/temp/data.xml'.

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

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

4

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

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

+1

Извините, что это не приложение Flex – Aximili

+1

@aximili: Нет проблем, просто прочитайте, второй абзац охватывает этот случай. –

Смежные вопросы