#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="" />