Você já deve conhecer alguns parâmetros do embed do Flash mas existem alguns que bem úteis que podem passar despercebido, e são exatamente esses que podem lhe salvar horas quebrando a cabeça.
Um dos atributos opcionais que temos no embed do SWF é o base.
- base – Specifies the base directory or URL used to resolve relative path statements in ActionScript.
em tradução livre:
- base – Especifica o diretório base ou URL usada para achar o caminhos relativo no ActionScript.
Uma melhor definição:
Por padrão a URL base que o SWF retorna é o caminho do HTML que ele se encontra. Quando você colocar seu SWF em uma outra pasta (diferente do arquivo HTML) e carrega XML, imagens e até mesmo outros SWF. Você terá problemas.
É para isso que serve o atributo base.
Exemplificando:
Quando usamos caminhos relativos no código ActionScript 3, como este:
[/Exemplo_base/swf/AbreURLRelativa.swf]
botao_mc.addEventListener(MouseEvent.CLICK, function():void
{
var url:String = "./Outro.swf";
var request:URLRequest = new URLRequest(url);
try {
navigateToURL(request, '_blank');
} catch (e:Error) {
trace("Error occurred!");
}
});
E no embed do seu Arquivo HTML você usa:
[/Exemplo_base/index.html]
<object classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″ width=”500″ height=”300″ codebase=”http://active.macromedia.com/flash7/cabs/swflash.cab#version=9,0,2,8″> <param name=”movie” value=”/swf/AbreURLRelativa.swf”></param> <param name=”play” value=”true”></param> <embed src=”/swf/AbreURLRelativa.swf” width=”500″ height=”300″ play=”true” pluginspage=”http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash”> </embed></object>
O clique do botão irá abrir a seguinte URL:
/Exemplo_base/Outro.swf
Se adicionarmos o parâmetro base com o valor “.” no embed como no exemplo abaixo:
<object classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″ width=”500″ height=”300″ codebase=”http://active.macromedia.com/flash7/cabs/swflash.cab#version=9,0,2,8″> <param name=”base” value=”.”></param> <param name=”movie” value=”/swf/AbreURLRelativa.swf”></param> <param name=”play” value=”true”></param> <embed base=”.” src=”/swf/AbreURLRelativa.swf” width=”500″ height=”300″ play=”true” pluginspage=”http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash”> </embed></object>
O clique do botão dessa vez irá abrir a seguinte URL:
/Exemplo_base/swf/Outro.swf
O caminho relativo agora é o diretório onde se encontra o SWF e não o HTML.
Para aqueles que, como eu, utiliza o SWFObject para adicionar Flash no HTML, aqui vai um exemplo de como adiciona esse paramêtro no embed:
var swfobj = new SWFObject(value, “swf/AbreURLRelativa”, 500, 300, “9.0.28″, “#FFFFFF”); swfobj.addParam(”base“, “.“); swfobj.write(”swfDiv”);
Lembrando que o caminho relativo dos arquivos carregados será sempre o valor do base.




Depois de muito, mas MUITO procurar na internet, finalmente encontrei a resposta…
É incrível como uma coisa tão simples, tão boba de ser resolvida é tida como um bicho de sete cabeças por tanta gente.
Muito obrigado pela ajuda!