Как получить несколько переменных Flashvars во Flash (без использования swfobject)

Я перестраиваю этот встраиваемый проигрыватель для своего клиента, URL-адрес видеофайла и пара других переменных находятся в HTML как Flashvars. Я подозреваю, что что-то не так с кодом, который ищет flashvars.

Верхняя часть, показывающая зеленую рамку, - это место, где проигрыватель не загрузился, потому что не смог получить Flashvars из HTML. В проигрывателе ниже жестко запрограммирована строка Flashvars, поэтому она работает.

Я считаю, что проблема где-то ниже. Возможно, что-то не так с тем, как я пытаюсь использовать Flashvars?

// LIVE Embedded
   //vidURL = stage.loaderInfo.parameters.fvar;
   vidURL = this.loaderInfo.parameters.fvar;            

   fvarText.text = "vidURL = this.loaderInfo.parameters.fvar"

   vidSplit = vidURL.split(".flv")[0].split("/");
   varVid   = vidURL.toLowerCase().split("&vid=")[1].split("&")[0];
   varChid  = vidURL.toLowerCase().split("&chid=")[1].split("&")[0];

// Hardcode Testing 
//(This creates the player that works at the bottom of the test page)
   /*vidURL   = "http://";
   vidSplit = vidURL.split(".flv")[0].split("/");
   varVid   = vidURL.toLowerCase().split("&vid=")[1].split("&")[0];
   varChid  = vidURL.toLowerCase().split("&chid


Я получаю эту ошибку при экспорте из Flash:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.Player::Embed/init()
at com.Player::Embed()

Однако я ожидаю появления этой ошибки, поскольку очевидно, что Flash еще не встроен, но может ли эта ошибка пролить свет на то, почему мой проигрыватель не может получить ссылку FlashVars, а затем выполнить сам рендеринг?

Код для встраивания HTML:

<object width="640" height="395" border="0">
<param name="flashvars" value="fvar=http://360.flv&amp;VID=1273&amp;CHID=4" />
<embed src="http://dev.site.com/flash.swf" width="640" height="395" flashvars="fvar=http://360.flv&amp;VID=1273&amp;CHID=4">
</embed>
</object>

person Leon Gaban    schedule 22.06.2010    source источник
comment
попробуйте установить flashvars как в тегах embed, так и в тегах объекта. Я думаю, что одни браузеры используют тег объекта, а другие - встраивание. Есть ли у вас вообще какие-нибудь переменные в любом браузере?   -  person George Profenza    schedule 22.06.2010
comment
хм, сейчас добавлю в объект, пока тестировал только в Safari на Mac, спасибо за отзыв!   -  person Leon Gaban    schedule 22.06.2010


Ответы (2)


Вам нужно установить параметр flashVars как в объекте, так и в теге embed. Перейдите по этой ссылке http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_3.html.

<object id='mySwf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'>
        <param name='src' value='FlashVarTest.swf'/>
        <param name='flashVars' value='firstName=Nick&lastName=Danger'/>
        <embed name='mySwf' src='FlashVarTest.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='firstName=Nick&lastName=Danger'/>
    </object>

Чтобы получить значения внутри Flash. Использовать это:

var firstName:String = stage.loaderInfo.parameters.firstName;
var lastName:String = stage.loaderInfo.parameters.lastName;
person Abhinav    schedule 22.06.2010
comment
Я пробовал это только сейчас, используя и ваш код, и dana ... Я думаю, проблема все еще как-то связана с ActionScript, который пытается подобрать Flashvar: / using Flash not Flex btw - person Leon Gaban; 22.06.2010
comment
Обновил ответ кодом AS3, который у меня работает. Посмотрите, решит ли это проблему. - person Abhinav; 22.06.2010
comment
Спасибо, Абинав! То, как я пытался получить две другие переменные, было проблемой :) но да, ваш способ работает! - person Leon Gaban; 23.06.2010

Как сказал Джордж, вы можете попробовать использовать flashvars как для тега, так и для тега. Кроме того, я цитирую значения своих атрибутов и избегаю амперсанда (&). Следующий код должен работать:

<object width="640" height="395" border="0">
    <param name="flashvars" value="file=http://how.llnwd.net/o18/UpDo_H_828-640x360.flv&amp;VID=1273&amp;CHID=4" />
    <embed src="http://dev.site.com/flash.swf" width="640" height="395" flashvars="file=http://how.llnwd.net/o18/UpDo_H_828-640x360.flv&amp;VID=1273&amp;CHID=4">
    </embed>
</object>
person dana    schedule 22.06.2010
comment
Спасибо, но проигрыватель по-прежнему не отображает, мой код Flash выглядит правильно? - person Leon Gaban; 22.06.2010
comment
Хорошо, здесь пара вещей. Во-первых, ваш флэш-код не должен разделять строку flashvars. В зависимости от того, какую версию flash вы используете, вы можете получить доступ к объекту flashvars по-разному. в AS3, например, вы должны сделать что-то вроде этого: var x: String = LoaderInfo (this.root.loaderInfo) .x; var y: String = LoaderInfo (this.root.loaderInfo) .y; var z: String = LoaderInfo (this.root.loaderInfo) .z; Также попробуйте заменить косую черту (/) на% 2f. Например: http:% 2f% 2fhowtoevery ... Не уверен, что это поможет, но может? - person dana; 22.06.2010
comment
Хотел бы я проверить и вас, и Abinav, но вот голосование по крайней мере: D, спасибо! - person Leon Gaban; 23.06.2010