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"); } |