koma38
10.10.2008, 18:54
Здравствуйте.
Очередной вопрос от начинающего.
Делаю масштабируемую карту города. Карта представляет собой Movie Clip, а масштабирование производится следующим кодом:
var current_zoom:Number = 1;
var prev_zoom:Number = 1;
var maxZoom:Number = 12;
var initW:Number = 1260; // начальные размеры клипа
var initH:Number = 860;
var screenW:Number = 1260; // размеры 'экрана'
var screenH:Number = 860;
var rectX:Number = 0; // координаты, ограничивающие перемещение
var rectY:Number = 0; // клипа (чтобы в экран не попадали края)
//// Дальше все сказано в формулах - собственно и комментровать нечего
var zoomer:Object = {};
Mouse.addListener(zoomer);
zoomer.onMouseWheel = function(dlt:Number):Void {
prev_zoom = current_zoom;
if (dlt>0) current_zoom++; else current_zoom--;
if (current_zoom > maxZoom) current_zoom = maxZoom;
if (current_zoom <1 ) current_zoom = 1;
if (current_zoom!=prev_zoom) zoomMap();
}
function zoomMap():Void {
var regX:Number = this.karta._xmouse;
var regY:Number = this.karta._ymouse;
this.karta._width = initW*current_zoom;
this.karta._height = initH*current_zoom;
rectX = screenW-this.karta._width;
rectY = screenH-this.karta._height;
var sign:Number = (current_zoom>prev_zoom)?-1:1;
this.karta._x +=regX*sign;
this.karta._y +=regY*sign;
if (this.karta._x>0) this.karta._x = 0;
if (this.karta._y>0) this.karta._y = 0;
if (this.karta._x<rectX) this.karta._x = rectX;
if (this.karta._y<rectY) this.karta._y = rectY;
}
karta.onPress = function ():Void {
this.startDrag(false,rectX,rectY,0,0);
}
karta.onRelease = karta.onReleaseOutside = function ():Void {
this.stopDrag();
}
Stage.showMenu = false;
Проблема в том, что внутри этого Movie Clip находятся кнопки, которые из-за вышеприведённого кода не реагируют на обработчик on().
Как быть? Есть ли выход?
Заранее большая признательность всем кто откликнется.
Очередной вопрос от начинающего.
Делаю масштабируемую карту города. Карта представляет собой Movie Clip, а масштабирование производится следующим кодом:
var current_zoom:Number = 1;
var prev_zoom:Number = 1;
var maxZoom:Number = 12;
var initW:Number = 1260; // начальные размеры клипа
var initH:Number = 860;
var screenW:Number = 1260; // размеры 'экрана'
var screenH:Number = 860;
var rectX:Number = 0; // координаты, ограничивающие перемещение
var rectY:Number = 0; // клипа (чтобы в экран не попадали края)
//// Дальше все сказано в формулах - собственно и комментровать нечего
var zoomer:Object = {};
Mouse.addListener(zoomer);
zoomer.onMouseWheel = function(dlt:Number):Void {
prev_zoom = current_zoom;
if (dlt>0) current_zoom++; else current_zoom--;
if (current_zoom > maxZoom) current_zoom = maxZoom;
if (current_zoom <1 ) current_zoom = 1;
if (current_zoom!=prev_zoom) zoomMap();
}
function zoomMap():Void {
var regX:Number = this.karta._xmouse;
var regY:Number = this.karta._ymouse;
this.karta._width = initW*current_zoom;
this.karta._height = initH*current_zoom;
rectX = screenW-this.karta._width;
rectY = screenH-this.karta._height;
var sign:Number = (current_zoom>prev_zoom)?-1:1;
this.karta._x +=regX*sign;
this.karta._y +=regY*sign;
if (this.karta._x>0) this.karta._x = 0;
if (this.karta._y>0) this.karta._y = 0;
if (this.karta._x<rectX) this.karta._x = rectX;
if (this.karta._y<rectY) this.karta._y = rectY;
}
karta.onPress = function ():Void {
this.startDrag(false,rectX,rectY,0,0);
}
karta.onRelease = karta.onReleaseOutside = function ():Void {
this.stopDrag();
}
Stage.showMenu = false;
Проблема в том, что внутри этого Movie Clip находятся кнопки, которые из-за вышеприведённого кода не реагируют на обработчик on().
Как быть? Есть ли выход?
Заранее большая признательность всем кто откликнется.