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
-~----------~----~----~----~------~----~------~--~---

Responder a