Flex — Как передать параметры в swf

#apache-flex #flash #parameter-passing

#apache-flex #flash #передача параметров

Вопрос:

Я использую FlashVars для передачи параметров в swf, но это не работает.

Вот html-код:

 <noscript>
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="tpc">
            <param name="movie" value="tpc.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#ffffff" />
            <param name="allowScriptAccess" value="sameDomain" />
            <param name="allowFullScreen" value="true" />
            <param name=FlashVars value="myVariable=Hello Worldamp;mySecondVariable=Goodbye">

            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="tpc.swf" width="100%" height="100%">
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="allowScriptAccess" value="sameDomain" />
                <param name="allowFullScreen" value="true" />
                **<param name=FlashVars value="myVariable=Hello Worldamp;mySecondVariable=Goodbye">**

            <!--<![endif]-->
            <!--[if gte IE 6]>-->
                <p> 
                    Either scripts and active content are not permitted to run or Adobe Flash Player version
                    10.0.0 or greater is not installed.
                </p>
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflashplayer">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </noscript>     
  

Вот код файла .mxml:

             var keyStr:String;
            var valueStr:String;

            var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;

            var length:int = 0;

            for (keyStr in paramObj) {
                length  ;
            }

            if (length == 0) {
                ta.appendText("Length is zero so below is the dummy data:n");
                paramObj = {test:"Test", test2:"Test2"};
            }

            for (keyStr in paramObj) {   
                valueStr = String(paramObj[keyStr]);
                ta.appendText("t"   keyStr   ":t"   valueStr   "n");
            }
  

Ответ №1:

Во-первых, не используйте этот HTML. Используйте swfobject для встраивания вашего Flash swf-файла в ваш html. Это проще сделать и поддерживается Adobe.

Во-вторых, вы неправильно обращаетесь к переменным и, вероятно, пытаетесь получить доступ к переменным слишком рано. Вам нужно дождаться события creationComplete приложения, прежде чем пытаться получить к нему доступ. В справке Adobe есть действительно хороший учебник по всему, что я только что сказал.

Комментарии:

1. 1 это сработало… Я обращаюсь к переменным только в функции init (), которая вызывается во время инициализации приложения …applicationComplete=»init()»

Ответ №2:

В рамках <object> попробуйте добавить <embed> вот так:

 <embed src="file.swf?myVariable=Hello Worldamp;mySecondVariable=Goodbye" width="" height="" />