Salvar Imagens pelo Flash no botão direito

Olá Flashers de plantão,

Bom esse é o meu primeiro tutorial, mas ja estou louco para fazer mais ;)

Neste vamos aprender a fazer uma interação entre Flash e PHP, para que possamos inserir em uma imagem dinâmica , através da Classe ContextMenu do Flash. Então vamos a diversão:

1º - O Código PHP:

<?php
//pegando a variável file passada pelo getURL do FLASH;
$fileVirtual = $_REQUEST["file"];
//montando o nome final do arquivo...
$fileAtual = explode("/", $fileVirtual);
$fileAtual = $fileAtual[sizeof($fileAtual)-1];
//abrindo stream de código do arquivo....
$file = fopen($fileVirtual,"r");
$content = fread($file, filesize($fileVirtual));
//definindo tipo do arquivo para download...
$tipo = "image/jpeg";
//definindo header para ação, e emitindo código do arquivo...
header("Content-type: $tipo");
header("Content-Disposition: attachment; filename=$fileAtual");
echo $content;
?>

Salve o Arquivo na pasta do onde será publicado o SWF, com o nome de download.php.

2º - Vamos ao Flash:

Crie um movie de tamanho e fps livres, e você já pode criar duas camadas: Actions & mcAlvo. E agora logo após no primeiro frame crie o seguinte MovieClip:

Dentro de nosso mcAlvo, devemos fazer mais duas camadas, hit & alvo. Começaremos pela segunda alvo, você deve desenhar a área imaginária para a foto a ser carregada, e apartir dela faça um MovieClip com o nome de alvo, e instance name também de alvo:

Agora após alvo criado, va na camada hit, e crie um botão invisível ou movie em alpha zero para definirmos as ações do botão direito, e de a ele o instance name de hitBt:

Feito isso nosso movie alvo ja está pronto! Agora basta deixa-lo na segunda camada da _root, e de a ele o instance name de mcAlvo:

Feito isso nossa parte "non-action", ja está pronta, passamos então para primeira camada da _root: Actions.

3º - As Ações do Flash:

//criando objetos e demais...
//movieclip loader para carregamento de imagem e seu listener...
var mvlImg:MovieClipLoader = new MovieClipLoader();
var objImg:Object = new Object();
//criando menu direito...
var menuDirImg:ContextMenu = new ContextMenu();
var clickSalva:ContextMenuItem = new ContextMenuItem();
//função responsável pelo click da imagem
clickSalva.onSelect = function(obj) {
//pegando variável file com a localização da imagem e passando ao PHP por getURL!
var img = obj._parent.file;
getURL("download.php?file=" add img);
};
clickSalva.caption = "Salvar Imagem...";
clickSalva.separatorBefore = true;
clickSalva.enabled = true;
//elimine essa linha caso queira que as opções padrão do menu direito apareçam
menuDirImg.hideBuiltInItems();
menuDirImg.customItems = [clickSalva];
//adicionando listener e defindo botão direito da imagem somente quando ela estiver carregada...
objImg.onLoadComplete = function(){
mcAlvo.hitBt.menu = menuDirImg;
}
mvlImg.addListener(objImg);
//definindo variável ao mcAlvo de localização da imagem...
mcAlvo.file = "foto_load.jpg";
// e por fim dando o load na imagem, e com o carregamento da mesma nosso Salvar Imagem, ja estará funcionanodo ;)
mvlImg.loadClip(mcAlvo.file, mcAlvo.alvo);
//
//opcional, se vc quer q o mãozinha do hitBt suma...
mcAlvo.hitBt.useHandCursor = false;

4º Só testar:

Agora e so testar pessoal, rodando em qualquer server PHP ja vamos ter um preview:

Abracetas... ;)

www.lucasferreira.com