lendadomato 1 Denunciar post Postado Fevereiro 2, 2011 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
Irineu Antunes 2 Denunciar post Postado Fevereiro 2, 2011 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
lendadomato 1 Denunciar post Postado Fevereiro 2, 2011 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
Irineu Antunes 2 Denunciar post Postado Fevereiro 2, 2011 você deve referencia a slider referenciando o seu: myMovieClip Compartilhar este post Link para o post Compartilhar em outros sites
lendadomato 1 Denunciar post Postado Fevereiro 2, 2011 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
lendadomato 1 Denunciar post Postado Fevereiro 2, 2011 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
lendadomato 1 Denunciar post Postado Fevereiro 4, 2011 amigo moderador, por favor pode considerar esse tópico como resolvido. Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites