Carregamento de conteúdo
Flash Player 9 e posterior, Adobe AIR 1.0 e posterior
O conteúdo do Flash Player e do AIR pode carregar muitos outros tipos de conteúdos, entre eles o seguinte:
Carregamento de arquivos SWF e imagens com a classe Loader
Use a classe Loader para carregar arquivos SWF e imagens (arquivos JPG, GIF ou PNG). Qualquer arquivo SWF, a não ser um que esteja na caixa de proteção local com arquivos do sistema, pode carregar arquivos SWF e imagens de qualquer domínio de rede. Apenas arquivos SWF em caixas de proteção locais podem carregar arquivos SWF e imagens do sistema de arquivos local. No entanto arquivos na caixa de proteção local com rede podem carregar apenas arquivos SWF locais que estejam na mesma caixa de proteção confiável local ou local com rede. Os arquivos SWF na caixa de proteção local com rede carregam conteúdo local que não sejam arquivos SWF (como imagens), no entanto eles não podem acessar dados no conteúdo carregado.
Ao carregar um arquivo SWF a partir de uma origem não confiável (como um domínio diferente daquele do arquivo SWF da raiz do objeto Loader), convém definir uma máscara para o objeto Loader para impedir que o conteúdo carregado (que é filho do objeto Loader) seja desenhado em partes do Palco fora daquela máscara, conforme mostrado no código a seguir:
import flash.display.*;
import flash.net.URLRequest;
var rect:Shape = new Shape();
rect.graphics.beginFill(0xFFFFFF);
rect.graphics.drawRect(0, 0, 100, 100);
addChild(rect);
var ldr:Loader = new Loader();
ldr.mask = rect;
var url:String = "http://www.unknown.example.com/content.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
addChild(ldr);
Ao chamar o método
load()
do objeto Loader, é possível especificar um parâmetro
context
que é um objeto LoaderContext. A classe LoaderContext inclui três propriedades que permitem definir o contexto de como o conteúdo carregado pode ser usado:
-
checkPolicyFile
: Use essa propriedade apenas ao carregar um arquivo de imagem (não um arquivo SWF). Especifique-a para um arquivo de imagem de um domínio diferente daquele do arquivo que contém o objeto Loader. Se você definir a propriedade como
true
, o Loader verificará o servidor de origem para obter um arquivo de política de URL (consulte
Controles de site (arquivos de política)
). Se o servidor conceder permissão ao domínio Loader, o ActionScript de arquivos SWF no domínio Loader poderá acessar dados na imagem carregada. Em outras palavras, você pode usar a propriedade
Loader.content
para obter uma referência ao objeto Bitmap que representa a imagem carregada ou os métodos
BitmapData.draw()
ou
BitmapData.drawWithQuality()
para acessar pixels da imagem carregada. O método
drawWithQuality
está disponível no Flash Player 11.3 e superior; AIR 3.3 e superior.
-
securityDomain
: Só use essa propriedade ao carregar um arquivo SWF (não uma imagem). Especifique-a para um arquivo SWF de um domínio diferente daquele do arquivo que contém o objeto Loader. Apenas dois valores são suportados atualmente para a propriedade
securityDomain
:
null
(o padrão) e
SecurityDomain.currentDomain
. Se você especificar
SecurityDomain.currentDomain
, ele solicitará que o arquivo SWF carregado seja
importado
para a caixa de proteção do arquivo SWF que está sendo carregado, indicando que ele funcionará como se fosse carregado do próprio servidor do arquivo SWF que está sendo carregado. Isso será permitido apenas se um arquivo de política de URL for encontrado no servidor do arquivo SWF carregado, permitindo acesso pelo domínio do arquivo SWF que está sendo carregado. Se o arquivo de política for encontrado, o carregador e o carregado poderão executar script livremente um no outro assim que o carregamento for iniciado, uma vez que estão na mesma caixa de proteção. Observe que a importação da caixa de proteção pode ser substituída principalmente executando um carregamento comum e, em seguida, fazendo com que o arquivo SWF chame o método
Security.allowDomain()
. Esse último método pode ser mais fácil de usar, pois o arquivo SWF carregado estará em sua própria caixa de proteção natural e, portanto, capaz de acessar recursos de seu próprio servidor real.
-
applicationDomain
: Use essa propriedade apenas ao carregar um arquivo SWF gravado no ActionScript 3.0 (não em uma imagem ou arquivo SWF gravado no ActionScript 1.0 ou no ActionScript 2.0). Ao carregar o arquivo, é possível especificar se ele será colocado em um domínio de aplicativo específico, em vez de ser colocado como padrão em um novo domínio de aplicativo que é filho do domínio do aplicativo do arquivo SWF que está sendo carregado. Observe que os domínios de aplicativos são subunidades de domínios de segurança e portanto você poderá especificar um domínio de aplicativo de destino apenas se o arquivo SWF que está sendo carregado for de seu próprio domínio de segurança, seja porque ele é de seu próprio servidor ou porque você o importou com êxito em seu domínio de segurança usando a propriedade
securityDomain
. Se você especificar um domínio de aplicativo, mas o arquivo SWF carregado fizer parte de um domínio de segurança diferente, o domínio especificado em
applicationDomain
será ignorado. Para obter mais informações, consulte
Trabalhar com domínios de aplicativo
.
Para obter detalhes, consulte
Especificação do contexto do carregamento
.
Uma propriedade importante de um objeto Loader é a propriedade
contentLoaderInfo
que é um objeto LoaderInfo. Ao contrário da maioria dos outros objetos, um objeto LoaderInfo é compartilhado entre o arquivo SWF que está sendo carregado e o conteúdo carregado e sempre está acessível para as duas partes. Quando o conteúdo carregado é um arquivo SWF, ele pode acessar o objeto LoaderInfo por meio da propriedade
DisplayObject.loaderInfo
. Objetos LoaderInfo incluem informações, como o progresso do carregamento, as URLs do carregador e do carregado, o relacionamento de confiança entre o carregador e o carregado e outras informações. Para obter mais informações, consulte
Monitoramento do progresso do carregamento
.
Carregamento de som e vídeo
Todos o conteúdo, além dos que estão na área de proteção local com o sistema de arquivos, têm permissão para carregar som e vídeo de origens da rede, usando os métodos
Sound.load()
,
NetConnection.connect()
e
NetStream.play()
.
Somente o conteúdo local com o sistema de arquivos e aplicativos AIR podem carregar mídia do sistema de arquivos local. Somente o conteúdo na área de segurança local com o sistema de arquivos, a área de segurança do aplicativo do AIR ou a área de segurança local confiável podem acessar dados nos arquivos carregados.
Há outras restrições ao acessar dados de mídia carregada. Para obter detalhes, consulte
Acesso à mídia carregada como dados
.
Carregamento de arquivos SWF e de imagens usando a tag <img> em um campo de texto
É possível carregar arquivos SWF e bitmaps em um campo de texto usando a tag
<img>
, conforme mostrado no código a seguir:
<img src = 'filename.jpg' id = 'instanceName' >
É possível carregar conteúdo carregado dessa maneira usando o método
getImageReference()
da ocorrência TextField, conforme mostrado no código a seguir:
var loadedObject:DisplayObject = myTextField.getImageReference('instanceName');
No entanto observe que arquivos SWF e imagens carregados dessa maneira são colocados na caixa de proteção que corresponde a sua origem.
Ao carregar um arquivo de imagem usando uma tag
<img>
em um campo de texto, o acesso aos dados da imagem pode ser permitido por um arquivo de política de URL. É possível verificar se há um arquivo de política adicionando um atributo
checkPolicyFile
à tag
<img>
, como no código a seguir:
<img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' >
Ao carregar um SWF usando uma tag
<img>
em um campo de texto, é possível permitir acesso aos dados daquele arquivo SWF por meio de uma chamada ao método
Security.allowDomain()
.
Ao usar uma tag
<img>
em um campo de texto para carregar um arquivo externo (em vez de usar uma classe Bitmap incorporada em seu SWF), um objeto Loader é criado automaticamente como um filho do objeto TextField, e o arquivo externo é carregado naquele Loader exatamente como se você tivesse usado um objeto Loader no ActionScript para carregar o arquivo. Nesse caso, o método
getImageReference()
retorna o Loader que foi criado automaticamente. Nenhuma verificação de segurança é necessária para acessar esse objeto Loader porque ele está na mesma caixa de proteção de segurança que o objeto de chamada.
No entanto quando você faz referência à propriedade
content
do objeto Loader para acessar a mídia carregada, regras de segurança são aplicadas. Se o conteúdo for uma imagem, será necessário implementar um arquivo de política de URL e, se o conteúdo for um arquivo SWF, você precisará fazer com que o código no arquivo SWF chame o método
allowDomain()
.
Adobe AIR
Na caixa de proteção do aplicativo, as marcas <img> em um campo de texto são ignoradas para evitar ataques de phishing. Além disso, o código executado na caixa de proteção do aplicativo não pode chamar o método de Segurança
allowDomain()
.
Conteúdo entregue usando servidores RMTP
O Flash Media Server usa o protocolo RTMP para servir dados, áudio e vídeo. É possível carregar esta mídia usando o método
connect()
da classe NetConnection, passando uma URL de RTMP como o parâmetro. O Flash Media Server pode restringir conexões e impedir que conteúdo seja baixado, com base no domínio do arquivo solicitante. Para obter detalhes, consulte a documentação on-line do Flash Media Server em
www.adobe.com/go/learn_fms_docs_br
.
Para usar os métodos
BitmapData.draw()
,
BitmapData.drawWithQuality()
e
SoundMixer.computeSpectrum()
e extrair gráficos de tempo de execução e dados de som dos fluxos RTMP, você deve permitir o acesso no servidor. Utilize o ActionScript de lado do servidor
Client.videoSampleAccess
e as propriedades
Client.audioSampleAccess
para permitir acesso a diretórios específicos no Flash Media Server. Para obter mais informações, consulte a
Referência de linguagem do ActionScript de lado do servidor
. (O método
drawWithQuality
está disponível no Flash Player 11.3 e superior; AIR 3.3 e superior.)
|
|
|
|
|