lendadomato 1 Denunciar post Postado Fevereiro 8, 2011 Pessoal, to precisando da força de vcs, preciso duplicar uma imagem carregada em um mc localmanete, já tentei vários métodos e sem sucesso pois sou iniciante na linguagem, consegui duplicar o mc no stage mas a imagem não vem duplicada, segue a parte que consegui fazer: recebo a imagem no mc_frente que tem um Linkage chamado "duplicavel" mc_frente.addChild(loader); var duplica:Object = getDefinitionByName("duplicavel") as Class; //cria um movieclip (uma nova instancia do movieclip original) var mc:MovieClip = new duplica(); //e manda ele pro stage addChild (mc); mc.x = 50; mc.y = 200; } dessa forma se duplica o mc_frente mas sem a imagem dentro, lembrando que os dois mcs serão manipulados com o mesmo componente Slider. Desde já agradeço a ajuda de todos! Compartilhar este post Link para o post Compartilhar em outros sites
lendadomato 1 Denunciar post Postado Fevereiro 9, 2011 pessoal, devido à manutenção do forum poucos não puderam me ajudar, ainda não consegui resolver meu problema. Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
brunobispo 20 Denunciar post Postado Fevereiro 9, 2011 É, o Flash não duplica mais. Já vi até algumas gambiarras aí pela net, mas não tem jeito. O ideal é você habilitar o linkage de um objeto gráfico na biblioteca e, então, criar quantas instâncias forem necessárias. Acrescentando, você consegue duplicar um Bitmap criando um novo Bitmap que utiliza o mesmo BitmapData do anterior: var imagem:Bitmap = new Bitmap(new Imagem()); var clone:Bitmap = new Bitmap(imagem.bitmapData); addChild(clone); Compartilhar este post Link para o post Compartilhar em outros sites
lendadomato 1 Denunciar post Postado Fevereiro 10, 2011 amigo BrunoBispo, não consegui fazer conforme você instruiu, segue o fonte completo: 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; import flash.display.DisplayObject; import flash.geom.Rectangle; import flash.system.Capabilities; import com.adobe.images.JPGEncoder; var fileRef:FileReference; //botão Configurar manipular a navegação browseButton.buttonMode=true; browseButton.mouseChildren=false; browseButton.addEventListener(MouseEvent.CLICK, onBrowseButtonClicked); progressBar.visible=false; // Essa função é chamada quando o botão Navegar é clicado. function onBrowseButtonClicked(event:MouseEvent):void { trace("onBrowse"); fileRef=new FileReference(); fileRef.addEventListener(Event.SELECT, onFileSelected); var swfTypeFilter:FileFilter = new FileFilter("SWF/JPG/PNG Files","*.jpeg; *.jpg;*.gif;*.png"); var allTypeFilter:FileFilter = new FileFilter("All Files (*.*)","*.*"); fileRef.browse([swfTypeFilter, allTypeFilter]); } // Essa função é chamado depois que o usuário selecionou um arquivo na janela do navegador de arquivos. function onFileSelected(event:Event):void { trace("Arquivo Selecionado"); // Este callback será chamado quando o arquivo é carregado e pronto para uso fileRef.addEventListener(Event.COMPLETE, onFileLoaded); // Este callback será chamado se houver erro durante o upload fileRef.addEventListener(IOErrorEvent.IO_ERROR, onFileLoadError); // Callback opcional para acompanhar o progresso de upload fileRef.addEventListener(ProgressEvent.PROGRESS, onProgress); // Informa o FileReference para carregar o arquivo fileRef.load(); // Mostrar barra de progresso progressBar.visible=true; progressBar.mode=ProgressBarMode.MANUAL; progressBar.minimum=0; progressBar.maximum=100; browseButton.visible=false; } // Essa função é chamada para nos informar sobre os progressos do upload function onProgress(event:ProgressEvent):void { var percentLoaded:Number=event.bytesLoaded/event.bytesTotal*100; trace("Carregado: "+percentLoaded+"%"); progressBar.setProgress(percentLoaded, 100); } // Essa função é chamada depois que o arquivo tenha sido carregado. function onFileLoaded(event:Event):void { var fileReference:FileReference=event.target as FileReference; // Estes passos indicados a seguir são para passar os dados como DisplayObject // Estas etapas são específicas para este exemplo. var data:ByteArray=fileReference["data"]; trace("Arquivo carregado"); fileRef.removeEventListener(Event.COMPLETE, onFileLoaded); fileRef.removeEventListener(IOErrorEvent.IO_ERROR, onFileLoadError); fileRef.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 { // Ocultar barra de progresso progressBar.visible=true; browseButton.visible=true; fileRef.removeEventListener(Event.COMPLETE, onFileLoaded); fileRef.removeEventListener(IOErrorEvent.IO_ERROR, onFileLoadError); fileRef.removeEventListener(ProgressEvent.PROGRESS, onProgress); trace("Arquivo deu erro."); } // Esta função abaixo é específica para esse exemplo. // Ele faz o processamento necessário para exibir o swf / png / jpeg arquivo que acabamos carregado. function onMovieClipLoaderComplete(event:Event):void { // Ocultar barra de progresso progressBar.visible=false; var imagem:DisplayObject=event.target.content; var loader:Loader=event.target.loader as Loader; // Ajustar para estágio trace("Largura da Imagem Carregada.width = "+imagem.width); trace("Altura da Imagem Carregada = "+imagem.height); imagem.scaleX=loader.width/imagem.width; imagem.scaleY=loader.height/imagem.height; trace("Posição da Imagem.scaleX = "+imagem.scaleX); trace("Posição da Imagem.scaleY = "+imagem.scaleY); trace("Largura do Palco = "+this.stage.width); mc_frente.addChild(loader); Compartilhar este post Link para o post Compartilhar em outros sites
brunobispo 20 Denunciar post Postado Fevereiro 10, 2011 function onMovieClipLoaderComplete(event:Event):void { var copia:Bitmap = new Bitmap(Bitmap(Loader(event.currentTarget.loader).content).bitmapData); addChild(copia); // Ocultar barra de progresso progressBar.visible=false; var imagem:DisplayObject=event.target.content; var loader:Loader=event.target.loader as Loader; // Ajustar para estágio trace("Largura da Imagem Carregada.width = "+imagem.width); trace("Altura da Imagem Carregada = "+imagem.height); imagem.scaleX=loader.width/imagem.width; imagem.scaleY=loader.height/imagem.height; trace("Posição da Imagem.scaleX = "+imagem.scaleX); trace("Posição da Imagem.scaleY = "+imagem.scaleY); trace("Largura do Palco = "+this.stage.width); mc_frente.addChild(loader); } Compartilhar este post Link para o post Compartilhar em outros sites
DesenvolvedorRoger 50 Denunciar post Postado Fevereiro 10, 2011 Um exemplo bem basicão: import flash.display.BitmapData; var btmp:Bitmap; var bmd:BitmapData; var url_urlr:URLRequest = new URLRequest("arq.ext"); var ld:Loader = new Loader(); ld.contentLoaderInfo.addEventListener(Event.COMPLETE,carregou); ld.load(url_urlr); addChild(ld); function carregou(e:Event) { bmd = new BitmapData(ld.width, ld.height, false, 0x000000FF); bmd.draw(ld); btmp = new Bitmap(bmd); btmp.y = ld.y+ld.height+10; btmp.x = ld.x; addChild(btmp); }; Compartilhar este post Link para o post Compartilhar em outros sites
lendadomato 1 Denunciar post Postado Fevereiro 10, 2011 function onMovieClipLoaderComplete(event:Event):void { var copia:Bitmap = new Bitmap(Bitmap(Loader(event.currentTarget).content).bitmapData); addChild(copia); // Ocultar barra de progresso progressBar.visible=false; var imagem:DisplayObject=event.target.content; var loader:Loader=event.target.loader as Loader; // Ajustar para estágio trace("Largura da Imagem Carregada.width = "+imagem.width); trace("Altura da Imagem Carregada = "+imagem.height); imagem.scaleX=loader.width/imagem.width; imagem.scaleY=loader.height/imagem.height; trace("Posição da Imagem.scaleX = "+imagem.scaleX); trace("Posição da Imagem.scaleY = "+imagem.scaleY); trace("Largura do Palco = "+this.stage.width); mc_frente.addChild(loader); } amigo BrunoBispo, deu o seguinte erro: TypeError: Error #1034: Falha de coerção de tipo: não é possível converter flash.display::LoaderInfo@f656701 em flash.display.Loader. at upload_esquerda2_fla::MainTimeline/onMovieClipLoaderComplete() vou bater cabeça por aqui pra ver o seu raciocínio, eu acho q estamos no caminho certo! Um exemplo bem basicão: import flash.display.BitmapData; var btmp:Bitmap; var bmd:BitmapData; var url_urlr:URLRequest = new URLRequest("arq.ext"); var ld:Loader = new Loader(); ld.contentLoaderInfo.addEventListener(Event.COMPLETE,carregou); ld.load(url_urlr); addChild(ld); function carregou(e:Event) { bmd = new BitmapData(ld.width, ld.height, false, 0x000000FF); bmd.draw(ld); btmp = new Bitmap(bmd); btmp.y = ld.y+ld.height+10; btmp.x = ld.x; addChild(btmp); }; amigo Roger, o sistema q estou usando não usa url, o load da imagem é feito localmente, eu tenho um sistema em AS2 que funciona a duplicidade do mc mas só porque preciso usar um componente Slider para aumentar a imagem eu terei q trocar. se alguém tiver um Slider que aumente a imagem que funcione no AS2 já me serve. pelo AS3. Compartilhar este post Link para o post Compartilhar em outros sites
brunobispo 20 Denunciar post Postado Fevereiro 10, 2011 Alterei lá. Tenta de novo. Compartilhar este post Link para o post Compartilhar em outros sites
lendadomato 1 Denunciar post Postado Fevereiro 10, 2011 Alterei lá. Tenta de novo. caramba meu camarada! bateu e valeu, funcionou direitinho. Muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
DesenvolvedorRoger 50 Denunciar post Postado Fevereiro 10, 2011 amigo Roger, o sistema q estou usando não usa url, o load da imagem é feito localmente... var btmp:Bitmap; var bmd:BitmapData; function onMovieClipLoaderComplete(event:Event):void { progressBar.visible=false; var imagem:DisplayObject=event.target.content; var loader:Loader=event.target.loader as Loader; bmd = new BitmapData(loader.width, loader.height, false, 0x000000FF); bmd.draw(loader); btmp = new Bitmap(bmd); btmp.y = mc_frente.y+mc_frente.height+10; btmp.x = mc_frente.x; addChild(btmp); // Ajustar para estágio trace("Largura da Imagem Carregada.width = "+imagem.width); trace("Altura da Imagem Carregada = "+imagem.height); imagem.scaleX=loader.width/imagem.width; imagem.scaleY=loader.height/imagem.height; trace("Posição da Imagem.scaleX = "+imagem.scaleX); trace("Posição da Imagem.scaleY = "+imagem.scaleY); trace("Largura do Palco = "+this.stage.width); mc_frente.addChild(loader); } ;) Compartilhar este post Link para o post Compartilhar em outros sites