Как получить доступ к flashvars в AS3 и добавить их в существующее текстовое поле? - PullRequest
5 голосов
/ 12 января 2011

Edit: я понял, что основная проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы текстовое поле, которое уже существовало в мувиклипе или на сцене, могло взять строку из flashvar.По какой-то причине он этого не сделает.Как я могу изменить существующее текстовое поле, чтобы оно соответствовало тексту flashvar?

Html:

<div id="flashContent">
            <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="29px" id="egnewsTicker" align="middle">
                <param name="movie" value="egnewsTicker.swf" />
                <param name="flashvars" value="newslisttest=this is my test" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="transparent" />
                <param name="scale" value="showall" />
                <param name="menu" value="false" />
                <param name="devicefont" value="false" />
                <param name="salign" value="lt" />
                <param name="allowScriptAccess" value="sameDomain" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="egnewsTicker.swf" width="100%" height="29px">
                    <param name="movie" value="egnewsTicker.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="transparent" />
                    <param name="scale" value="showall" />
                    <param name="menu" value="false" />
                    <param name="devicefont" value="false" />
                    <param name="salign" value="lt" />
                    <param name="allowScriptAccess" value="sameDomain" />
                    <param name="flashvars" value="newslisttest=this is my test" />
                <!--<![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>
        </div>

Я знаю, что это должно быть простой задачей, и я нашел нескольковеб-статьи, которые приводят примеры, но я просто не могу заставить это работать, когда пытаюсь сделать свой собственный код.Все, что я хочу сделать, это передать строку flashvar и иметь возможность получить к ней доступ по имени во flash, используя AS3, но я не могу этого добиться.

Я пытаюсь:

var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
newsItem.newsHeadline.text = String(paramObj[varName]);

Я также пробовал:

newsItem.newsHeadline.text = this.loaderInfo.parameters.newslisttest;

Ничего, что я пробую, не работает, оно всегда остается пустым.В чем заключается прием доступа к flashvars во flash as3?Я просто не понимаю и нигде не могу найти хорошего объяснения ...

Ответы [ 3 ]

11 голосов
/ 12 января 2011

Попробуйте: stage.loaderInfo.parameters.yourparam или stage.loaderInfo.parameters["yourparam"]

Можете ли вы опубликовать свой HTML-код, чтобы мы могли видеть, как вы передаете flashvars во Flash.

4 голосов
/ 28 августа 2012

Я потратил впустую весь этот день ...

AS3:

var uid:String;
// your code
this.loaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
// your code
function loaderComplete(e:Event=null):void
{
    var fv = stage.loaderInfo.parameters;
    uid = fv['uid'] || "'uid' not found";
}

HTML:

<object type='application/x-shockwave-flash' data='/flash/yourSWF.swf' width='320' height='240'>
<param name='wmode' value='transparent' />
<param name='FlashVars' value='uid=yourData' />
<param name='movie' value='/flash/yourSWF.swf' />
</object>
1 голос
/ 08 января 2012

Если проблема не устранена, следуйте приведенным ниже строкам. Я использовал флеш-карты, у меня они отлично работают.

Мой HTML-скрипт был:

<html>
<body>
<div id="flashContent">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"FlashVars="uid=123&name=santhu" width="100%" height="100%" id="index" align="middle">
  <param name="movie" value="index.swf" />
  <param name=FlashVars value="uid=123&name=santhu">
  <!--[if !IE]>-->
   <object type="application/x-shockwave-flash" data="index.swf" 
            FlashVars="uid=123&name=santhu"  width="100%" height="100%">
     <param name="movie" value="index.swf" />
     <param name=FlashVars value="uid=123&name=santhu">
  <!--<![endif]-->
  <!--[if !IE]>-->
   </object>
  <!--<![endif]-->
</object>
</div>
</body>
</html>

и мой AS-код для загрузки vars

this.root.loaderInfo.addEventListener(Event.COMPLETE, SWFLoadComplete);
private function SWFLoadComplete(e:Event)
{
  obj=this.root.loaderInfo.parameters;
  trace(obj.uid , obj.name);  // outputs: 123 santhu
}
...