Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lendadomato

[Resolvido] Limpar Conteúdo do MovieClip em AS3

Recommended Posts

Bom pessoal,

 

tenho no palco um mc que recebe o upload localmente sem php de imagens

escolhidas pelos visitantes, embora preciso acertar dois problemas:

 

1º- gostaria que o sistema limpasse a imagem anterior ao adicionar a nova, o

que está acontecendo é q as imagens estão sobrepondo umas às outras.

 

2º- gostaria de resolver a questão do botão limpar, quando é clicado ele

remove o mc completamente e não tem como adicionar mais imagens, gostaria que

removesse apenas o conteúdo q são as imagens.

 

segue o link do teste em funcionamento, este mc é manipulado,

clique na imagem upada e carregue ou mova o controle deslizante

para aumentar ou diminuir:

teste clique aqui

 

segue o fonte usado:

 

import flash.events.MouseEvent;
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.utils.ByteArray;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.display.MovieClip;
import fl.controls.ProgressBarMode;

var mFileReference:FileReference;

// Setup button to handle browsing
browseButton.buttonMode=true;
browseButton.mouseChildren=false;
browseButton.addEventListener(MouseEvent.CLICK, onBrowseButtonClicked);
// Hide progress bar
progressBar.visible=false;

// This function is called when the BROWSE button is clicked.
function onBrowseButtonClicked(event:MouseEvent):void
{
trace("onBrowse");
mFileReference=new FileReference();
mFileReference.addEventListener(Event.SELECT, onFileSelected);
var swfTypeFilter:FileFilter = new FileFilter("SWF/JPG/PNG Files","*.jpeg; *.jpg;*.gif;*.png");
var allTypeFilter:FileFilter = new FileFilter("All Files (*.*)","*.*");
mFileReference.browse([swfTypeFilter, allTypeFilter]);
}

// This function is called after user selected a file in the file browser dialog.
function onFileSelected(event:Event):void
{
trace("onFileSelected");
// This callback will be called when the file is uploaded and ready to use
mFileReference.addEventListener(Event.COMPLETE, onFileLoaded);

// This callback will be called if there's error during uploading
mFileReference.addEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);

// Optional callback to track progress of uploading
mFileReference.addEventListener(ProgressEvent.PROGRESS, onProgress);

// Tells the FileReference to load the file
mFileReference.load();




// Show progress bar
progressBar.visible=true;			
progressBar.mode=ProgressBarMode.MANUAL;
progressBar.minimum=0;
progressBar.maximum=100;			

browseButton.visible=false;

}

// This function is called to notify us of the uploading progress
function onProgress(event:ProgressEvent):void
{
var percentLoaded:Number=event.bytesLoaded/event.bytesTotal*100;
trace("loaded: "+percentLoaded+"%");
progressBar.setProgress(percentLoaded, 100);
}

// This function is called after the file has been uploaded.
function onFileLoaded(event:Event):void
{
var fileReference:FileReference=event.target as FileReference;

// These steps below are to pass the data as DisplayObject 
// These steps below are specific to this example.
var data:ByteArray=fileReference["data"];
trace("File loaded");



mFileReference.removeEventListener(Event.COMPLETE, onFileLoaded);
mFileReference.removeEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);
mFileReference.removeEventListener(ProgressEvent.PROGRESS, onProgress);	
browseButton.visible=true;

var movieClipLoader:Loader=new Loader();
movieClipLoader.loadBytes(data);
movieClipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onMovieClipLoaderComplete);

}




function onFileLoadError(event:Event):void
{
// Hide progress bar
progressBar.visible=false;
browseButton.visible=true;
mFileReference.removeEventListener(Event.COMPLETE, onFileLoaded);
mFileReference.removeEventListener(IOErrorEvent.IO_ERROR, onFileLoadError);
mFileReference.removeEventListener(ProgressEvent.PROGRESS, onProgress);	
trace("File load error");
}   

// This function below is specific to this example.
// It does the processing required to display the swf/png/jpeg file that we have just loaded.
function onMovieClipLoaderComplete(event:Event):void
{
// Hide progress bar
progressBar.visible=false;
var loadedContent:DisplayObject=event.target.content;
var loader:Loader=event.target.loader as Loader;
// Fit to stage
trace("loadedContent.width="+loadedContent.width);
loadedContent.scaleX=frente.width/loadedContent.width;
loadedContent.scaleY=frente.height/loadedContent.height;
trace("loadedContent.scaleX="+loadedContent.scaleX);
trace("loadedContent.width="+loadedContent.width);
trace("this.stage.width="+this.stage.width);
frente.addChild(loader);
}

 

 

a parte que limpa o mc é essa:

 

//botao, quando clicar irá executar a função que faz sumir a imagem
btn_limpar.addEventListener(MouseEvent.CLICK, apagaImagem);
//função que apagua imagem apóes clicar no botão.
function apagaImagem(evento:MouseEvent):void{
//carregador.unload(); //apenas descarrega imagem do stage pelo metodo unloade() da classe Laoder.
//se NÃO for carregar mais a mesma imagem, você pode utilizar o removeChild()
removeChild(frente); //removemos a variavel Loader que adicionamos anteriormente no Stage

}

 

tentei usar

frente.unload(); 

mas da o seguinte erro:

TypeError: Error #1006: unload não é uma função.

 

desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para remover todas as imagens e add uma nova:

 

 

function addImage(image:DisplayObject):void

{

while(myMovieClip.NunChildren != 0)myMovieClip.removeChildAt(0); // isto remove tudo que tiver no mc

myMovieClip.add(image);

}

 

 

;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para remover todas as imagens e add uma nova:

 

 

function addImage(image:DisplayObject):void

{

while(myMovieClip.NunChildren != 0)myMovieClip.removeChildAt(0); // isto remove tudo que tiver no mc

myMovieClip.add(image);

}

 

 

;D

 

 

Amigo Irineu,

 

funcionou e não deu nenhum erro mas, o controle Slider não funciona corretamente

e não sei o q causou o conflito:

 


import fl.events.SliderEvent;

slider_frente.value = 10;
slider_frente.addEventListener(SliderEvent.CHANGE, resize);

function resize (event:SliderEvent):void {
frente.scaleX = event.target.value /10;
frente.scaleY = event.target.value /10;

}

 

veja o teste atualizado:

Teste Clique aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve referencia a slider referenciando o seu: myMovieClip

 

 

me desculpe pois tive q sair, pois bem,

a instância do "myMovieClip" é chamada de "frente" e não

entendo pq o componente não responde como deveria, no

caso estou referenciando ao devido objeto.

Vou procurar algo relacionado aqui no forum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal,

 

a questão do botão "limpar" já está resolvida, o q fiz

foi deixar apenas 1 q é o mc princial q recebe as imagens:

 


btn_limpar.addEventListener(MouseEvent.CLICK, apagaImagem);

function apagaImagem(evento:MouseEvent):void{

frente.removeChildAt(1);

}

 

 

mas a questão de fazer o upload da imagem sem ela sobrepor

às outras ainda não consegui com o sistema q tenho.

 

Veja o teste atualizado:

Teste Clique aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.