this.loaderInfo является нулевым во Flex - PullRequest
4 голосов
/ 28 марта 2010

У меня проблема с модулем Flex. Я хочу получить доступ к переменным url через this.loaderInfo.url, я вызываю функцию в обработчике createionComplete модуля, и иногда это работает, а иногда нет. (Невозможно получить доступ ... ноль). Есть предложения?

Эта функция вызывается в обработчике creationComplete модуля. И хотя он выдает окно ошибки, предупреждение с URL-адресом показывает и содержит URL-адрес модуля.

private function checkModuleUrl():void
{
    var url:String = this.loaderInfo.url;
    Alert.show(url);
}

Ответы [ 5 ]

5 голосов
/ 23 ноября 2010

Самое раннее, что вы можете получить loaderInfo из Приложения, это после того, как сработало событие APPLICATION_COMPLETE.

1 голос
/ 30 марта 2010

Поскольку вы используете Flex, лучшим вариантом будет:

Application.application.url

См .: Справочник по языку Flex ™ 3.5

EDIT: В этом случае вы могли бы опубликовать больше своего кода, особенно кода creationComplete и там, где вы вызываете checkModuleUrl. Я подозреваю, что нулевая ссылка, которую вы можете получить, связана с тем, что экземпляр loaderInfo вашего DisplayObject не отправляется перед вашим вызовом checkModuleUrl.

0 голосов
/ 07 мая 2010

Для модулей нет свойства 'url', единственный способ найти эту информацию - воспользоваться этой функцией:

public static function getModuleUrl(module:Object):String {
    var loaderInfo:LoaderInfo = module.loaderInfo;
    if (loaderInfo)
        return loaderInfo.url;
    else {
        if (module.owner is ModuleLoader) {
            return ModuleLoader(module.owner).url;
        }
    }
    return null;
}

но результат не гарантируется, в этом случае возвращается ноль. Этот код работает для меня с модулями, загруженными с помощью ModuleManager или ModuleLoader. Также помните, что модули могут быть загружены из байтового массива, в этом случае URL не существует.

0 голосов
/ 30 марта 2010

Использовать BrowserManager попробуй это var bm: IBrowserManager = BrowserManager.getInstance (); bm.init (); bm.url; для переменных после '#' используйте bm.fragment

0 голосов
/ 28 марта 2010

Дайте this.root.loaderInfo попробовать.

...