本文介绍了AS3 将父 mc 的中心缩放到子 mc 的中心的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码在加载时将父剪辑mapcontainer.themap"置于乔治亚州的中心.但是,当我尝试缩放 mapcontainer.themap 时,它不会围绕乔治亚州的中心进行缩放.缩放时如何将乔治亚保持在中心位置?
The following code centers the parent clip "mapcontainer.themap" on the state Georgia on load. However, when i try to scale mapcontainer.themap, it doesnt scale around Georgia's center. How do i keep Georgia in the center when scaling?
//This sets the parent clip so it's centered on the child "georgia" clip on load
var yValue:Number = mapcontainer.themap.georgia.y;
var xValue:Number = mapcontainer.themap.georgia.x;
var xDiff:Number = mapcontainer.themap.width/2;
var yDiff:Number = mapcontainer.themap.height/2;
if (xDiff > stage.stageWidth/2 || yDiff > stage.stageHeight/2) {
xValue = -xValue;
yValue = -yValue;
}
mapcontainer.themap.x = xValue;
mapcontainer.themap.y = yValue;
//This line?
mapcontainer.themap.scaleX = mapcontainer.themap.scaleY = 2;
推荐答案
这里是从 这里
protected function scaleAround(objectToScale:DisplayObject, scalePoint:Point, scaleAmount:Number ):void {
// scaling will be done relatively
var relScaleX:Number = scaleAmount / objectToScale.scaleX;
var relScaleY:Number = scaleAmount / objectToScale.scaleY;
// map vector to centre point within parent scope
scalePoint = objectToScale.localToGlobal( scalePoint );
scalePoint = objectToScale.parent.globalToLocal( scalePoint );
// current registered postion AB
var AB:Point = new Point( objectToScale.x, objectToScale.y );
// CB = AB - scalePoint, objectToScale vector that will scale as it runs from the centre
var CB:Point = AB.subtract( scalePoint );
CB.x *= relScaleX;
CB.y *= relScaleY;
// recaulate AB, objectToScale will be the adjusted position for the clip
AB = scalePoint.add( CB );
// set actual properties
objectToScale.scaleX *= relScaleX;
objectToScale.scaleY *= relScaleY;
objectToScale.x = AB.x;
objectToScale.y = AB.y;
}
因此,对于您的场景,您可以这样做:
So for your scenario, you could do this:
scaleAround(mapcontainer.themap,new Point(mapcontainer.themap.georgia.x,mapcontainer.themap.georgia.y),2)
这篇关于AS3 将父 mc 的中心缩放到子 mc 的中心的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!