Comunidad de diseño web y desarrollo en internet online

Zoom en región

Citar            
MensajeEscrito el 10 Mar 2011 02:08 pm
Hola, a ver si alguien me puede ayudar :)

Tengo un mapa con objetos en su interior contenido en un sprite (mapHolder). Lo que quiero hacer es muy sencillo, hacer zoom sobre una región del mapa al mover la rueda del mouse. El zoom lo hace pero el problema lo tengo al reubicar la posición del mapa tras hacer el escalado. Quiero que se amplie/reduzca la zona sobre la que hago zoom y se centre.
El problema lo tengo al volver a posicionar el mapa en pantalla.

¿Alguna sugerencia?

Gracias de antemano ;)

Código ActionScript :

mapHolder.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelHandler);

private function onMouseWheelHandler(mouseEvent:MouseEvent):void {
         
   zoomCenter = globalToLocal(new Point(mouseEvent.localX, mouseEvent.localY));
      
   if(mouseEvent.delta > 0) zoomIn();
   else zoomOut();   

   mapHolder.x = mapHolder.x - zoomCenter.x;
   mapHolder.y = mapHolder.y - zoomCenter.y;          
         
}//end 'function'

public function zoomIn():void {
   
   if ((mapHolder.scaleX < 1.30) && (mapHolder.scaleY < 1.30)){
      mapHolder.scaleX += 0.15;
      mapHolder.scaleY += 0.15;
   }      
}//end 'function'   
      
public function zoomOut():void {
            
   if ((mapHolder.scaleX > 0.65) && (mapHolder.scaleY > 0.65)) {
      mapHolder.scaleX -= 0.15;
      mapHolder.scaleY -= 0.15;   
   }
}//end 'function'   

Por emedmaria

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Mar 2011 08:42 pm
Tienes que calcular un offset desde el punto de anclaje o capturar en donde se hizo click para después de escalado, centrarlo allí. No es fácil y hubo un extenso POST sobre el tema

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Mar 2011 08:48 pm
Gracias Jorge.

Pero ahí está el problema, detecto la posición en pantalla desde donde se 'hace el click , pero no sé como centrar ese punto del mapa tras el escalado :S

María.

Por emedmaria

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2011 07:46 am
¿Me podrías indicar cual es el post donde se explica? Los que he encontrado no son exactamente lo q busco...

Por emedmaria

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Mar 2011 12:45 pm
El mapa tiene que estar contenido en un MC, llamemosle visor, con su vertice superior izquierdo en 0,0. Hal hacer click, luego de escalar, miras:
- la posición en x e y del mapa con respecto a su contenedor (posX, posY)
- el ancho y largo del mapa (ancho, alto)
- el punto donde hizo click (clickX, clickY)

Luego calculas el centro natural (diferencia entre el ancho del visor con el del mapa dividido 2), que te da la posición negativa sobre ambos ejes del mapa. Luego miras a que distancia esta el punto clicK y lo mueves ese offset (ojo, las distancias son siempre vectores)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Mar 2011 06:23 pm
Muchas gracias Jorge!

Por emedmaria

73 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.