Boa Tarde, Pessoal, eu começei em janeiro com o flex e as3, e quando pensei que já percebia umas coisinhas reparei que afinal funcionam mas não estão feitas da melhor maneira...
Pois bem, neste momento eu para tratar as imagens dentro de contentores tenho assim: - O contentor tem medidas fixas (ex: 300x200px) e dentro dentro uma imagem a 100% por 100% que funciona como loader.. - No complete do loader, faço um tempBitmapdata= ImageSnapshot.captureBitmapData(imagem.content) // tem de ser assim pra ter mais de 2800px; - Faço o crop do bitmapdata para que o seu tamanho (ex: 2000x1200 px) sejam proporcionais aos 300x200px do contentor, através de do metodo copypixel: originalData.copyPixels(tempBitmapdata.clone(), new Rectangle(imgX , imgY , imgW , imgH) , new Point( 0 , 0 )); - faço o dispose do tempBitmapdata; - E guardo o originalData pra quando precisar de fazer reset, e faço um clone do originalData pra meter na Imagem... (explico mais a frente pq); E com isto fiquei com 2 bitmapdata's na memória :s Aplicar efeitos: Dentro de cada contentor tenho um array efeitos, com o id do efeito e se está a ser usado ou nao.. Ora... quando aplico um efeito sepia, vou ao bitmapdata da imagem e aplico o efeito, o bitmapdata é alterado.. e por aí a fora mosaico (mosaico + sepia), preto e branco etc etc o problema é quando quero voltar atrás! e por isso é que tenho sempre o originalData pra não ter de carregar a imagem outra vez :s, e entao faço o dispose do bitmadata actual, faço o clone do original e aplico os efeitos que estão no array.. Eu sei que isto não está bem... funciona.. mas deve haver maneira melhor... Recortar Imagem: No doubleclik da imagem, abre uma titlewindow que carrega de novo a imagem para ser feito novo crop.. 1º- vou ao meu abookmanager ver qual o objecto seleccionado, carrego o link original da imagem, e no complete faço o mesmo metodo que no contentor: tempBitmapdata= ImageSnapshot.captureBitmapData(imagem.content) // tem de ser assim pra ter mais de 2800px; nesta titlewindow tenho 2 imagens com o mesmo bitmapdata // explico já porque.. 2º-Calculo o tamanho do meu transformTool (o x,y,width,height deste é que me diz o valor do rectangle pro copyPixels) 3º Com as mesmas cordenadas do transformTool tenho uma vbox que serve de mask à 2º imagem, A 1ª imagem tem um blendeffect.hardlight pra tornar bem perceptivel o que o utilizador está a cortar... no move/resize do transformTool actualizo as coordenadas e tamanho da mask.. Quando aplico no novo crop, originalData.copyPixels(tempBitmapdata.clone(), new Rectangle(imgX , imgY , imgW , imgH) , new Point( 0 , 0 )); - faço o dispose do tempBitmapdata; -faço dispose ao originalData do contentor e ao bitmapdata da imagem, digo que o originalData do meu contentor é este novo originalData da titlewindow, faço clone ao originalData da imagem e aplico os efeitos se houver... Eu sei que isto não está bem... funciona.. mas deve haver maneira melhor... em termos de memória volta sempre ao valor que estava mesmo depois dos crops mas é comilão de ram... /////////////////// Eu tenho ideias pra isto funcionar melhor.. não sei é implementa-las... 1ª ideia, em vez de carregar pro originalData os 3000px, carregar só os 300px que preciso, e depois quando o transformTool aumentasse eu carregava os pixeis que faltam e fazia o merge do bitmapdata de alguma maneira que nao sei.... 2ª fazer o mask sem ter de ter um clone da imagem... de alguma maneira que nao sei.... Estou aberto a sugestoes! e podem testar o comportamento também http://adigitalbook.com Por favor! --~--~---------~--~----~------------~-------~--~----~ Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade Portuguesa de Desenvolvimento de RIAs - www.riapt.org" do Grupos Google. Para enviar mensagens para este grupo, envie um email para [email protected] Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED] Para mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT -~----------~----~----~----~------~----~------~--~---
