Tengo un zoom sobre un mapa que se aplica con dos lupitas una de más y otra de menos, el zoom más lo hago con scale.x+=.3 y en principio me va aumentando el mapa de manera uniforme con cada clic.
El problema es cuando lo aplico la lupita de menos, cuando vuelvo a usar el zoom más ya no me aumenta de 20 km en 20 km sino de 40 en 40, y si vulevo a usar la lupa de menos, luego me lo aumenta de 60 en 60... ¿por qué???
Copio un trozo del código por si a alguien se le ocurre por quñe pasa:
lupamas2_mc.addEventListener(MouseEvent.CLICK,
coge_lupamas);
function coge_lupamas(event:MouseEvent):void {
Mouse.hide();
lupamas2_mc.visible=false;
lupamas_mc.startDrag();
lupamenos_mc.x=435.20;
lupamenos_mc.y=566.55;
// ZOOM IN //
lupamas_mc.addEventListener(MouseEvent.MOUSE_UP, onImageClick2);
function onImageClick2(e:Event) {
if(lupamas_mc.hitTestObject(sensible_mc) && (mapa_mc.width<2481.5)) {
var cur_mx:Number=mapa_mc.mouseX;
var cur_my:Number=mapa_mc.mouseY;
mapa_mc.scaleX+=.3;
mapa_mc.scaleY+=.3;
trampacontador_mc.scaleX-=.1;
trampacontador_mc.scaleY-=.1;
mapa_mc.x=(cur_mx-(cur_mx*mapa_mc.scaleX));
mapa_mc.y=(cur_my-(cur_my*mapa_mc.scaleY));
lupamas_mc.addEventListener(MouseEvent.CLICK,
sumarcontador);
function sumarcontador(e:MouseEvent):void {
/*var tamamapa:Number=mapa_mc.scaleX*200
var restoa:Number=tamamapa/800;
var restob:Number=restoa-200
var contador:Number=200-restob*/
var contador:Number=trampacontador_mc.width
escala_mc.contador_text.text=String(contador);
}
}
}
}
lupamas_mc.addEventListener(MouseEvent.CLICK,
deja_lupamas);
function deja_lupamas(e:Event) {
if(lupamas_mc.hitTestObject(estuche_mc)) {
Mouse.show();
lupamas2_mc.visible=true;
lupamas2_mc.visible=true;
lupamas_mc.stopDrag();
lupamas_mc.x=406.80;
lupamas_mc.y=565.45;
} else if (lupamas_mc.hitTestObject(lupamenos2_mc)) {
lupamas2_mc.visible=true;
lupamas_mc.stopDrag();
lupamenos2_mc.visible=false;
lupamenos_mc.startDrag();
lupamas_mc.x=406.80;
lupamas_mc.y=565.45;
}
}
lupamenos2_mc.addEventListener(MouseEvent.MOUSE_DOWN,
coge_lupamenos2);
function coge_lupamenos2(event:MouseEvent):void {
Mouse.hide();
lupamenos2_mc.visible=false;
lupamenos_mc.startDrag();
lupamas_mc.x=406.80;
lupamas_mc.y=565.45;
// ZOOM OUT //
lupamenos_mc.addEventListener(MouseEvent.MOUSE_UP, onImageClick3);
function onImageClick3(e:Event) {
if(lupamenos_mc.hitTestObject(sensible_mc) && (mapa_mc.scaleX>1)) {
var cur_mx:Number=mapa_mc.mouseX;
var cur_my:Number=mapa_mc.mouseY;
mapa_mc.scaleX-=.3;
mapa_mc.scaleY-=.3;
trampacontador_mc.scaleX+=.1;
trampacontador_mc.scaleY+=.1;
mapa_mc.x=(cur_mx-(cur_mx*mapa_mc.scaleX));
mapa_mc.y=(cur_my-(cur_my*mapa_mc.scaleY));
lupamenos_mc.addEventListener(MouseEvent.CLICK,
restarcontador);
function restarcontador(e:MouseEvent):void {
/*var tamamapa:Number=mapa_mc.scaleX*200
var restoa:Number=tamamapa/800;
var restob:Number=restoa-200
var contador:Number=200-restob*/
var contador:Number=trampacontador_mc.width
escala_mc.contador_text.text=String(contador);
}
} else if (mapa_mc.width<800.05) {
mapa_mc.scaleX=0
mapa_mc.scaleY=0
mapa_mc.width=800.05;
mapa_mc.height=535.2;
mapa_mc.x=0;
mapa_mc.y=0;
trampacontador_mc.width=200;
trampacontador_mc.height=19.3;
trampacontador_mc.x=171.2;
trampacontador_mc.y=624.4;
}
}
}