Ir para conteúdo

POWERED BY:

Arquivado

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

inx

[Resolvido] BitmapData e Matrix

Recommended Posts

http://imasters.com.br/artigo/4110/flash/componente_de_zoom_utilizando_as_classes_bitmapdata_e_matrix/

Li e reli..

Mais eu não entendo.. +S

 

eu queria que aonde eu colocasse o componente ficasse o zoom..

Mais eu boiei legal nesse tuto..

Alguém tem algum outro exemplo ou pode me explicar como fazer o zoom quando a lupa estiver sobre o mc?

 

http://forum.imasters.com.br/public/style_emoticons/default/cry.gif To apanhando faz dois dias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

resumindo as partes importantes do código,

 

para fazer a "copia" do movieClip (vai ficar do mesmo tamanho que o original)

 

/*Import*/
import flash.display.BitmapData;
import flash.geom.Matrix;

var zoomMatrix:Matrix= new Matrix(); 
var bmp:BitmapData;

//Atalho para o próximo depth 
var level:Number = this.getNextHighestDepth();

//Criação do objeto bmp, instância da classe BitmapData
bmp = new BitmapData(alvo_mc._width, alvo_mc._height, false, 0xFFFFFFFF);

//Anexando o objeto bitmap criado ao _root
_root.attachBitmap(bmp, level);

//Desenha a imagem ou MovieClip na imagem de destino
bmp.draw(alvo_mc, zoomMatrix);

agora é só aumentar, você pode fazer com o matrix.scale(),

sendo o valor 1 = 100% do tamanho

 

// aumenta em 200%
var tamZoom = 2
zoomMatrix.scale(tamZoom, tamZoom );
bmp.draw(alvo_mc, zoomMatrix);

 

com isso ele só mostra o canto superior esquerdo (x=0, y=0)

 

 

para pegar outra posição, é só mexer com o Matrix.tx e Matrix.ty

 

// aumenta em 300%
var tamZoom = 3
zoomMatrix.scale(tamZoom, tamZoom );

// copia a partir do meio da figura original
zoomMatrix.tx = -(alvo_mc._width * tamZoom ) / 2;
zoomMatrix.ty = -(alvo_mc._height * tamZoom ) / 2;

bmp.draw(alvo_mc, zoomMatrix);

 

 

agora é só adaptar para o que você

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que sim kisuke.. Agora deu pra entende...

Essa semana eu vou voltar ao trampo que eu necessito disso e posto aki. +S

^^ Brigadão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

EEEeee.. eu tava tao feliz... juro..

porém.. surgiu o desafio de fazer em as3.. e sinceramente?

to morto.. deve ter algo de diferente no eskema. =S

 

olha só.. eu tenho um site com layout liquido.. e sobre o topo de todas as camadas possuo o arquivo. distorcer.

distorcer é um cara legal.. que pega a partir do _y:344 do layout liquido...

 

o zoom deveria ficar certinho aonde está o distorcer.. porém o zoom é um garoto muito mal, ele só funciona no TL..ou seja.. no topo e a esquerda é a unica coisa que ele mostra dentro do distorcer.. sendo que o distorcer deveria mostrar o que está embaixo dele.

 

var sw:Number=stage.stageWidth;
var sh:Number=stage.stageHeight;
var area:BitmapData=new BitmapData(sw,sh);
var imagem:Bitmap=new Bitmap(area);
var zoom:Matrix = new Matrix();
zoom.scale(1.1,1.1);
distorcer.addChild(imagem);
distorcer.addEventListener(Event.ENTER_FRAME, _zoom);
function _zoom(event:Event):void {
	area.draw(root, zoom);
	zoom.ty = 344;//axo q ta aki o b.o. não entendi esse calculo..
        zoom.tx = sw;//axo q ta aki o b.o. não entendi esse calculo..
}

EDITADO:

Esqueci de dizer que distorcer vai mostrar o que está em baixo dele(ou seja a root);

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.