Проблема с изменением размера окна панорамирования изображений

#flash #actionscript #actionscript-2 #flash-cs5

#flash #actionscript #actionscript-2 #flash-cs5

Вопрос:

У меня есть этот документ во flash, где я хочу, чтобы изображение перемещалось при движении мыши. Когда я тестирую фильм, он работает нормально с любой проблемой. Но когда я изменяю размер окна в соответствии с положением большого изображения, все идет не так.

Вот код (Actionscript 2.0):

 var boundX:Number = bigPic._x activator._x*(bigPic._width/activator._width);
var diffX:Number = bigPic._width-activator._width;
var easeSpeed:Number = 7;

function resizeHandler():Void {
    g1_mc._x = 0;
    g1_mc._y = 0;
    g1_mc._height = Stage.height;
    g1_mc._width = (Stage.width-activator._width)/2;
    g2_mc._y = 0;
    g2_mc._height = Stage.height;
    g2_mc._width = (Stage.width-activator._width)/2;
    g2_mc._x = Stage.width-g2_mc._width;
    activator._x = g1_mc._width;
    //trace('bigPic'   bigPic._x);
    //trace('activatorx'   activator._x);
    boundX = bigPic._x activator._x*(bigPic._width/activator._width);
    diffX = bigPic._width-activator._width;
    var divX:Number = _xmouse / activator._width;
    var moveX:Number = divX*diffX;
}

function activate():Void {
    var divX:Number = _xmouse / activator._width;
    var moveX:Number = divX*diffX;
    trace(bigPic._x);
    bigPic._x  = (boundX-moveX-bigPic._x) / easeSpeed;
    //trace('DIVX'   divX);
    /*trace('boundX'   boundX);
    trace('moveX'   moveX);*/
}

activator.onRollOver = function():Void {
    addEnterFrameEvent();
};
activator.onRollOut = function():Void {
    removeEnterFrameEvent();
};
function addEnterFrameEvent():Void {
    this.onEnterFrame = activate;
}
function removeEnterFrameEvent():Void {
    delete this.onEnterFrame;
}
var stageListener:Object = new Object();
stageListener.onResize = function():Void {
    resizeHandler();
    delete _root.onEnterFrame;
};
Stage.addListener(stageListener);
stageListener.onResize();
Stage.scaleMode = "noScale";
Stage.align = "TL";
  

Ответ №1:

Я думаю, ошибка изменения размера, которую вы видите, связана с тем, что вы вызываете функцию activate без установленной границы для перемещения изображения, и изображение продолжает увеличивать / уменьшать свои координаты x.

Все, что вам нужно сделать, это добавить условие, чтобы проверить, выходит ли изображение за рамки (я полагаю, что это ошибка, на которую вы ссылаетесь), и если это так, то установите координаты x в максимальные / минимальные пределы…Что-то вроде этого: (до конца вашей функции activate())

 var MinimumX:Number = Stage.width - bigPic._width;
var MaximumX:Number = 0;

if(bigPic._x < MinimumX)  bigPic._x = MinimumX;
if(bigPic._x > MaximumX)  bigPic._x = MaximumX;