FlashVars, o retorno

Você já precisou passar valores do HTML para o Flash? Dependendo do tipo de projeto que você está executando, esse é um recurso necessário, e no AS2 usávamos o bom e velho FlashVars, ou passávamos os valores via query string.

Usando query string:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
        width="550" height="400">
           
    <param name="movie" value="exemplo.swf?teste=Mensagem de teste" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#FFFFFF" />
   
    <!--[if !IE]> <-->
    <object data="exemplo.swf?teste=Mensagem de teste"
            width="550" height="400" type="application/x-shockwave-flash">
        <param name="quality" value="high" />
        <param name="bgcolor" value="#FFFFFF" />
        <param name="pluginurl" value="http://www.adobe.com/go/getflashplayer" />
    </object>
    <!--> <![endif]-->
   
</object>


Usando FlashVars:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
        width="550" height="400">
           
    <param name="movie" value="exemplo.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#FFFFFF" />
    <param name="FlashVars" value="teste=Mensagem de teste FlashVars" />
   
    <!--[if !IE]> <-->
    <object data="exemplo.swf"
            width="550" height="400"
            type="application/x-shockwave-flash">
        <param name="quality" value="high" />
        <param name="bgcolor" value="#FFFFFF" />
        <param name="pluginurl" value="http://www.adobe.com/go/getflashplayer" />
        <param name="FlashVars" value="teste=Mensagem de teste FlashVars" />
    </object>
    <!--> <![endif]-->
   
</object>

No AS2 os valores passados ficavam no _level0 de nossa aplicação. Por exemplo, para exibir a variável teste:

1
meuTexto_txt.text = _level0.teste;

Mas, como ficaria isso no AS3?

No AS3, os dados passados para o Flash não ficam mais no _level0, até porque ele nem existe mais. Esses valores são armazenados em um objeto LoaderInfo do root.

1
meuTexto.text = this.root.loaderInfo.parameters.teste;

root é um DisplayObject, que contém uma propriedade chamada loaderInfo, que retorna uma instância da classe LoaderInfo, usada pelo root. O objeto LoaderInfo contém uma propriedade chamada parameters, com todos os parâmetros enviados.

Por fim, o valor teste é o nome da variável enviada. Caso você queira varrer todos os valores, pode usar um for in:

1
2
3
4
for (var i:String in this.root.loaderInfo.parameters)
{
    meuTexto.appendText(i + " = " + this.root.loaderInfo.parameters[i] + "\n");
}

Leave a Comment