Carregamento de um arquivo SWF externo

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

No ActionScript 3.0, os arquivos SWF são carregados usando a classe Loader. Para carregar um arquivo SWF externo, o ActionScript precisa fazer quatro coisas:

  1. Criar um novo objeto URLRequest com a url do arquivo.

  2. Criar um novo objeto Loader.

  3. Chamar o método load() do objeto Loader, transmitindo a ocorrência de URLRequest como um parâmetro.

  4. Chame o método addChild() em um contêiner de objetos de exibição (como a linha de tempo principal de um documento Flash) para adicionar a ocorrência de Loader à lista de exibição.

Por fim, o código fica semelhante a este:

var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);

Esse mesmo código pode ser usado para carregar um arquivo de imagem externo, como uma imagem JPEG, GIF ou PNG, especificando a url do arquivo de imagem em vez da url de um arquivo SWF. Um arquivo SWF, diferentemente de um arquivo de imagem, pode conter o ActionScript. Por isso, embora o processo de carregar um arquivo SWF seja idêntico ao de carregar uma imagem, no carregamento de um arquivo SWF externo, o arquivo SWF que faz o carregamento e o arquivo SWF que é carregado residem na mesma caixa de proteção caso o Flash Player ou o AIR executem o SWF e você pretenda usar o ActionScript para se comunicar de alguma forma com arquivo SWF. Além disso, se o arquivo SWF contiver classes que compartilhem o mesmo namespace das classes no arquivo SWF de carregamento, talvez seja necessário criar um novo domínio de aplicativo para o arquivo SWF carregado a fim de evitar conflitos de namespace. Para obter mais informações sobre segurança e considerações sobre domínio de aplicativo, consulte Trabalhar com domínios de aplicativo e Carregamento de conteúdo .

Quando carregado com êxito, o arquivo SWF externo pode ser acessado por meio da propriedade Loader.content . Se for publicado no ActionScript 3.0, o arquivo SWF externo será um clipe de filme ou uma entidade gráfica, dependendo da classe que ele estender.

Há algumas diferenças para carregar um arquivo SWF no Adobe AIR for iOS em contraste com outras plataformas. Para obter mais informações, consulte Carregamento de arquivos SWF no AIR for iOS .

Considerações sobre o carregamento de um arquivo SWF antigo

Se o arquivo SWF externo for publicado com uma versão mais antiga do ActionScript, há importantes limitações a serem consideradas. Diferentemente de um arquivo SWF do ActionScript 3.0 que é executado com AVM2 (ActionScript Virtual Machine 2), um arquivo SWF publicado para o ActionScript 1.0 ou no 2.0 é executado com AVM1 (ActionScript Virtual Machine 1).

Há diferenças importantes ao carregar um arquivo SWF do ActionScript 1.0 ou 2.0 em um arquivo SWF do ActionScript 3.0 (em comparação com o carregamento de um arquivo SWF do ActionScript 3.0). O Flash Player fornece compatibilidade total com conteúdo publicado em versões anteriores. Qualquer conteúdo que é executado em versões anteriores do Flash Player pode ser reproduzido nas versões do Flash Player que suportam o ActionScript 3.0. No entanto, são aplicadas as seguintes limitações:

  • O código do ActionScript 3.0 pode carregar um arquivo SWF escrito no ActionScript 1.0 ou 2.0. Quando um arquivo SWF do ActionScript 1.0 or 2.0 é carregado com sucesso, o objeto carregado (a propriedade Loader.content ) é um objeto AVM1Movie. Uma ocorrência de AVM1Movie não é igual a uma ocorrência de MovieClip. É um objeto de exibição, mas, diferentemente de um clipe de filme, não inclui métodos ou propriedades relacionadas à linha de tempo. O arquivo SWF AVM2 pai não pode acessar as propriedades, métodos ou objetos do objeto AVM1Movie carregado.

  • Os arquivos SWF escritos no ActionScript 1.0 ou 2.0 não podem carregar arquivos SWF escritos no ActionScript 3.0. Isso significa que os arquivos SWF criados no Flash 8 ou no Flex Builder 1.5 ou versões anteriores não podem carregar arquivos SWF do ActionScript 3.0.

    A única exceção a essa regra é que um arquivo SWF do ActionScript 2.0 pode ser substituído por um arquivo SWF do ActionScript 3.0, contanto que o arquivo SWF do Action Script 2.0 não tenha carregado nada antes em qualquer um de seus níveis. Um arquivo SWF do ActionScript 2.0 pode fazer isso por meio de uma chamada a loadMovieNum() , transmitindo um valor de 0 ao parâmetro level .

  • Em geral, os arquivos SWF escritos no ActionScript 1.0 ou 2.0 devem ser migrados para trabalhar com os arquivos SWF escritos no ActionScript 3.0. Por exemplo, suponhamos que você criou um player de mídia usando o ActionScript 2.0. Ele carrega vários conteúdos que também foram criados usando o ActionScript 2.0. Se você criar um novo conteúdo no ActionScript 3.0, não poderá carregá-lo no player de mídia. Será necessário migrar o player de vídeo para o ActionScript 3.0.

    Se, no entanto, você criar um player de mídia no ActionScript 3.0, ele poderá executar carregamentos simples do seu conteúdo do ActionScript 2.0.

As tabelas a seguir resumem as limitações das versões anteriores do Flash Player em relação ao carregamento de conteúdo mais novo e execução de código, bem como as limitações de cross-scripting entre arquivos SWF escritos em versões diferentes do ActionScript.

Funcionalidade com suporte

Flash Player 7

Flash Player 8

Flash Player 9 e 10

Pode carregar SWFs publicados para

7 e anterior

8 e anterior

9 (ou 10) e anterior

Contém este AVM

AVM1

AVM1

AVM1 e AVM2

Executa SWFs gravados no ActionScript

1.0 e 2.0

1.0 e 2.0

1.0, 2.0 e 3.0

Na tabela a seguir, "Funcionalidade com suporte" refere-se ao conteúdo executado no Flash Player 9 ou posterior. O conteúdo executado no Flash Player 8 ou anterior só pode ser carregar, exibir, executar e cruzar scripts no ActionScript 1.0 e 2.0.

Funcionalidade com suporte

Conteúdo criado no ActionScript 1.0 e 2.0

Conteúdo criado no ActionScript 3.0

Pode carregar conteúdo e executar código no conteúdo criado no

ActionScript 1.0 e 2.0 apenas

ActionScript 1.0, 2.0 e 3.0

Pode cruzar conteúdo de script criado no

ActionScript 1.0 e 2.0 apenas (ActionScript 3.0 até LocalConnection)

ActionScript 1.0 e 2.0 até LocalConnection.

ActionScript 3.0