leitura do artigo >

11
out

Salvar imagem carregada externamente

À diferença do conteúdo HTML, o conteúdo Flash não tem uma opção por default que permite salvar as imagens que ele carrega. No entanto, existe uma forma de permitir isso e neste post vou explicar como criar essa opção no menu de contexto da imagem.

Comentários (3) Comentários(2) Categorias Action Script3, Soluções, XML

Nos sistemas Windows/Linux, o menu de contexto aparece ao clicar o botão direito do mouse. Nos sistemas Mac, o menu de contexto aparece ao clicar o mouse com a tecla Ctrl pressionada. Os códigos que usarei nos exemplos deste post permitem que a opção de salvar apareça ao fazer o clique (de menu de contexto) sobre a imagem.


EXEMPLO 1
Neste primeiro exemplo, será carregada somente uma imagem. Faça o clique do menu de contexto sobre ela para ver a opção “Save image as…“:

savesingle example

Este foi o código que usei neste exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var loader:Loader = new Loader()
loader.load(new URLRequest("single.jpg"))
loader.x = 160
loader.y = 40
addChild(loader)
 
var fr:FileReference = new FileReference()
var cm:ContextMenu = new ContextMenu()
var cmi:ContextMenuItem = new ContextMenuItem("Save image as...")
cm.hideBuiltInItems()
cm.customItems = [cmi]
cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, saveAs)
function saveAs(e:ContextMenuEvent) {
	fr.download(new URLRequest(e.mouseTarget.loaderInfo.url))
}
 
loader.contextMenu = cm



EXEMPLO 2
Neste segundo exemplo, serão carregadas 4 imagens. Se fosse usada só uma instância da classe Loader para carregar todas as imagens, a propiedade e.mouseTarget.loaderInfo.url daria o mesmo resultado em todos os menus de contexto e todos salvariam a mesma imagem. Por isso, se deve usar uma instância de Loader para cada imagem que for carregar. Faça o clique do menu de contexto sobre qualquer das imagens para ver a opção “Save image as…“:

savemultipleexample

Este foi o código que usei no ActionScript deste exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var xml:XML
var i:int = 0
 
var urlloader:URLLoader = new URLLoader()
urlloader.load(new URLRequest("multiple.xml"))
urlloader.addEventListener(Event.COMPLETE, urlloaderComplete)
function urlloaderComplete(e:Event){
	xml = XML(e.currentTarget.data)
	for(i=0; i< xml.children().length(); i++){
		var loader:Loader = new Loader()
		loader.load(new URLRequest(xml.child(i).@src))
		loader.x = 200*(i%2) + 75
		loader.y = 150*int(i/2) + 45
		loader.contextMenu = cm
		addChild(loader)
	}
}
 
var fr:FileReference = new FileReference()
var cm:ContextMenu = new ContextMenu()
var cmi:ContextMenuItem = new ContextMenuItem("Save image as...")
cm.hideBuiltInItems()
cm.customItems = [cmi]
cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, saveAs)
function saveAs(e:ContextMenuEvent) {
	fr.download(new URLRequest(e.mouseTarget.loaderInfo.url))
}

Assim como no post de AS3 + XML : slideshow simples eu usei um arquivo XML para carregar várias imagens externas, neste exemplo fiz o mesmo usando o arquivo multiple.xml e este foi o código que coloquei no arquivo:

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?> 
<images>
	<img src="multiple1.jpg" />
	<img src="multiple2.jpg" />
	<img src="multiple3.jpg" />
	<img src="multiple4.jpg" />
</images>

Salvar Imagem Carregada Externamente (FLAs salvos como CS4)
Baixado 45 vezes
Tamanho 78.42 kB
Clique para fazer o download

Postado em 11-10-2011 por
em Action Script3, Soluções, XML

Share

Comentários

  • bunomonteiro disse:
    em 11 de outubro de 2011

    nice!

  • Eder Lima disse:
    em 11 de outubro de 2011

    Poxa! Que legal esse post Igor! Bem útil mesmo, muito bom! ^^

 Escreva um Comentário

Seu nome

E-mail (não será publicado) (obrigatório)

Website

Comente

Spam protection by WP Captcha-Free