2011-05-19 50 views
0

我有這個文件在閃存中,我想要一個圖像平移與鼠標移動。當我測試電影時,它可以運行任何問題。但是,當我把窗口大小調整到大圖像的位置時,它就會出錯。我瘋了。任何幫助?我將把鏈接留在這裏,以便你可以看到.fla文件。圖像平移窗口調整大小問題

http://www.megaupload.com/?d=TYS7BNJY

這裏是代碼(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"; 

回答

0

我想,你看到調整大小錯誤是因爲你調用激活功能,無需一組邊界的圖像移動&圖像繼續遞增/遞減它的x座標。

所有你需要做的就是添加一個條件,以檢查圖像是否是走出去幀的(我想這是你指的錯誤)&如果是,則設置x座標最大值/最小值限制...這樣的事情:(到你的結束激活()函數)

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;