Flashvars не загружаются в приложении Flex 4.5 в Adobe Flash Builder - PullRequest
0 голосов
/ 29 октября 2011

Я следую этому примеру Adobe FlashVars , чтобы попытаться загрузить flashvars в моем приложении Flex 4.5.Тем не менее, код не работает.Я не очень понимаю, что я делаю не так или отличается от примера.Вот мой код index.template.html (в папке html-template), который использует swfobject для загрузки приложения:

        function embedPlayer() {
            var flashvars = {};
            flashvars.userLoggedIn = true;
            flashvars.test = "hello";
            embedSWF(SWF_FILE, SWF_ID, SWF_WIDTH, SWF_HEIGHT, "9.0", "playerProductInstall.swf", flashvars);
        }

А вот упрощенный код из моего приложения Flex:

    <?xml version="1.0" encoding="utf-8"?>
<s:Application 
    xmlns:d="http://ns.adobe.com/fxg/2008/dt" 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:c="components.*" 
    initialize="mainInit()" 
    creationComplete="doCreationComplete()"
    applicationComplete="_initializer.applicationComplete()"
    xmlns:application="components.application.*" 
    xmlns:gui="com.gui.*" xmlns:main="com.gui.components.main.*" xmlns:photoTray="com.gui.components.main.photoTray.*">

    <fx:Style source="/assets/all.css" />

    <fx:Script>
        <![CDATA[
            import com.gui.components.main.Initializer;
            import com.gui.components.main.LayoutsController;
            import mx.core.FlexGlobals;         

            private var _initializer:Initializer;
            private var _layoutsController:LayoutsController;
            public var userLoggedIn:Boolean;                                                                 

            private function mainInit():void {
                _initializer = new Initializer(this);
            }

            private function doCreationComplete():void {
                _initializer.init();
                var params:Object = FlexGlobals.topLevelApplication.parameters;
                //userLoggedIn = params.userLoggedIn;
                _layoutsController = new LayoutsController(this);
            }   

        ]]>
    </fx:Script>

</s:Application>

Я вызываю FlexGlobals.topLevelApplication.parameters (после creationComplete), чтобы попытаться получить доступ к flashvars, что, как говорит Adobe, является способом сделать это в flex 4.5.Из моего исследования использование Application.application.parameters и root.loaderInfo.parameters оба устарели.

Кто-нибудь видит, что я делаю не так?Мое приложение отлично работает во Flash Builder, за исключением загрузки flashvars при создании.

Спасибо

1 Ответ

0 голосов
/ 29 октября 2011

Вот как я это делаю в flex 3, не уверен, что это применимо к flex 4.5

Application.application.parameters.userLoggedIn

Также на этой линии

//userLoggedIn = params.userLoggedIn;

Значением любого flash var является строка, которой вы пытаетесь присвоить логическое значение.
Так что сделай это.

//userLoggedIn = Boolean(params.userLoggedIn);
...