2011-05-19 52 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;