问题
然而,放大2D图像,从图像中心点开始放大。我需要它从一个特定的协调中扩大?
[backgroundImage setScale:rifleZoom];我现在放大图像的技术。
我需要从中央屏幕放大,而不是中心图像。
现在,我在屏幕中央放置步枪射击的方法是这样的:
CGPoint positionNow = CGPointMake(backgroundImage.position.x, backgroundImage.position.y);
CGPoint positionPrev = CGPointMake(0.5, 0.5);
float xdiff = positionNow.x - positionPrev.x;
float ydiff = positionNow.y - positionPrev.y;
CGPoint newPositionOne = CGPointMake(0.5- xdiff, 0.5 - ydiff);
newPositionOne = CGPointMake(newPositionOne.x/rifleZoom, newPositionOne.y/rifleZoom);然而,不管图像被缩放了多少,这都是完美的。我似乎无法实现它,将图像从屏幕中心向上缩放,而不是图像中心。
我试过什么
我试着在放大之前改变图像的位置。然而,对于与newPositionOne相同的观点,这不起作用或做得不对。
编辑
这一比例,并带来中心到屏幕的中心点,或完全混乱。这实在是太草率了,无法做出正确的决定。
CGPoint positionNow = CGPointMake(backgroundImage.position.x, backgroundImage.position.y);
CGPoint positionPrev = CGPointMake(0.5, 0.5);
float xdiff = positionNow.x - positionPrev.x;
float ydiff = positionNow.y - positionPrev.y;
CGPoint newPositionOne = CGPointMake(0.5- xdiff, 0.5 - ydiff);
newPositionOne = CGPointMake(newPositionOne.x/rifleZoom, newPositionOne.y/rifleZoom);
double xPosition = newPositionOne.x / backgroundImage.size.width;
double yPosition = newPositionOne.y / backgroundImage.size.height;
CGPoint prevAnchorPoint = backgroundImage.anchorPoint;
backgroundImage.anchorPoint = CGPointMake(xPosition,yPosition);
double positionX = backgroundImage.position.x + (backgroundImage.anchorPoint.x - prevAnchorPoint.x) * backgroundImage.size.width;
double positionY = backgroundImage.position.y + (backgroundImage.anchorPoint.y - prevAnchorPoint.y) * backgroundImage.size.height;
backgroundImage.position = CGPointMake(positionX,positionY);
[backgroundImage runAction:[SKAction repeatAction:[SKAction scaleTo:rifleZoom duration:1.0] count:1]];发布于 2015-02-11 14:11:12
您可以使用背景节点的锚点属性来更改图像缩放点。默认情况下,anchorPoint为(0.5,0.5)。这表示节点的中心。如果生成anchorPoint (0,0),则其移动到左下角。
anchorPoint :定义与节点位置相对应的sprite中的点。在单位坐标空间中指定此属性的值。默认值为(0.5),这意味着sprite以其位置为中心。
当您移动anchorPoint时,您必须再次调整背景位置,以抵消由于更改anchorPoint而引起的移动。
所以你可以用,
CGPoint xPosition = convertedPoint.x / background.size.width
CGPoint yPosition = convertedPoint.y / background.size.height
CGPoint prevAnchorPoint = background.anchorPoint
background.anchorPoint = CGPointMake(xPosition,yPosition)
CGFloat positionX = background.position.x + (background.anchorPoint.x - prevAnchorPoint.x) * background.size.width
CGFloat positionY = background.position.y + (background.anchorPoint.y - prevAnchorPoint.y) * background.size.height
background.position = CGPointMake(positionX,positionY)https://stackoverflow.com/questions/28453291
复制相似问题