Flashvars не будет загружаться - PullRequest
1 голос
/ 05 января 2012

У меня странная проблема с загрузкой Flashvars в мое flash-приложение. Я попытался изолировать код и попробовать его в другом документе, но возвращенный объект все еще пуст.

Это мой HTML-код:

<div id="Div1">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="630" height="671" id="testApp" align="middle">
    <param name="movie" value="{$this->siteUrl}/flash/testVars.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="play" value="true" />
    <param name="loop" value="true" />
    <param name="wmode" value="window" />
    <param name="scale" value="showall" />
    <param name="menu" value="true" />
    <param name="FlashVars" value="one=1&two=2" />
    <param name="devicefont" value="false" />
    <param name="salign" value="" />
    <param name="allowScriptAccess" value="always" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="{$this->siteUrl}/flash/testVars.swf" width="630" height="671">
        <param name="movie" value="{$this->siteUrl}/flash/testVars.swf" />
        <param name="quality" value="high" />
        <param name="bgcolor" value="#ffffff" />
        <param name="play" value="true" />
        <param name="loop" value="true" />
        <param name="FlashVars" value="one=1&two=2" />
        <param name="wmode" value="window" />
        <param name="scale" value="showall" />
        <param name="menu" value="true" />
        <param name="devicefont" value="false" />
        <param name="salign" value="" />
        <param name="allowScriptAccess" value="always" />
    <!--<![endif]-->
        <a href="http://www.adobe.com/go/getflash">
            <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>

Это мой код as3:

ExternalInterface.call('console.log', "Begin")
var obj:Object = this.loaderInfo.parameters;
for(var i:String in obj)
{
    this[i] = obj[i];
    ExternalInterface.call('console.log', "Parsing: " + i + " - " + obj[i])
}

Он хорошо начинается в окне консоли Chrome, но не печатает flashvars. Можете ли вы сказать мне, что я делаю не так?

Спасибо!

Ответы [ 3 ]

1 голос
/ 20 февраля 2013

Обходной путь - встроить всю среду выполнения TLF вместо внешней загрузки. Шаги для этого описаны в в этом руководстве от Adobe :

Чтобы скомпилировать ресурсы ActionScript TLF в опубликованных SWF-файлах:

  • Выберите «Файл»> «Параметры публикации».

  • Щелкните вкладку Flash.

  • Нажмите кнопку «Настройки» рядом с меню «Сценарий».

  • Откройте вкладку «Путь к библиотеке».

  • Выберите Merged Into Code из меню Linkage по умолчанию.

Это, очевидно, значительно увеличивает размер файла SWF.

0 голосов
/ 05 января 2012

Вы пытались запустить это в режиме отладки. Заявление

this[i] = obj[i];

дает исключение. Вы не можете сделать это в Actionscript, если ваш класс не Dynamic. Прокомментировал строку и все заработало.

0 голосов
/ 05 января 2012

Хорошо, значит, это 'ошибка' во Flash с компонентом TLF Text. Включение текстового элемента TLF в ваш документ также включает общую библиотеку времени выполнения Text Layout Framework (TLF RSL). RSL ожидает preloader перед вашим основным фильмом

Это означает, что ваш swf больше не является первым загруженным фильмом, и поэтому он делает FlashVars недоступными.

У Адриана Парра есть отличный блог на эту тему: http://www.adrianparr.com/?p=137

...