gpt4 book ai didi

ios - SpriteKit -- 更改 SKShapeNode 大小

转载 作者:行者123 更新时间:2023-12-01 15:35:18 25 4
gpt4 key购买 nike

我有一个 SKShapeNode创建者 shapeNodeWithRect: cornerRadius: .这个圆角矩形是 SKEffectNode 的子节点,所以我可以设置 shouldRasterize = YES .

我想根据用户的触摸更改此节点的宽度。即当他们将手指水平向右移动时,矩形会变大(当他们向左移动时会变小)。

  • 我可以通过替换原来的SKShapeNode使用新尺寸的新尺寸(但这很糟糕)。
  • 我试过在 SKEffectNode 上运行调整大小操作和 SKShapeNode (但这不起作用,因为调整大小仅适用于 SKSpriteNotes [SKAction Apple Docs -- Resize] ):
  • [self runAction:[SKAction resizeToWidth:newSize.width height:newSize.height duration:0]];
    [self.shapeNode runAction:[SKAction resizeToWidth:newSize.width height:newSize.height duration:0]];
  • 我可以像在这个答案中一样更改 xScale:Change height of an SKShapeNode .但如果我这样做,SKShapeNode被像素化。

  • 我该怎么做?

    在 UIKit 中非常简单(只需设置 UIView 的框架)...

    最佳答案

    创建您的 SKShapeNode大尺寸的物体,然后立即缩小它们。如果你这样做,你不应该遇到模糊或像素化的节点。

    在 Swift 4.0 中:

    class GameScene: SKScene {
    var roundedRect: SKShapeNode!
    didMove(to view: SKView) {
    roundedRect = SKShapeNode(rect: Constants.RoundedRect.largeInitialRect, cornerRadius: Constants.Rect.largeInitialCornerRadius)
    // configure roundedRect
    addChild(roundedRect)
    scaleRoundedRect
    }

    func scaleRoundedRect(to size: CGSize) {
    roundedRect.xScale = roundedRect.xScale / frame.width * size.width
    roundedRect.yScale = roundedRect.yScale / frame.height * size.height
    }
    }

    在 Objective-C 中:
    @implementation GameScene

    - (void) didMoveToView:(SKView *)view {
    CGRect largeRect = CGRectMake(0, 0, 0, 0); // replace with your own values
    CGFloat largeCornerRadius = (CGFloat) 0; // replace with your value
    _roundedRect = [SKShapeNode shapeNodeWithRect:largeRect cornerRadius:largeCornerRadius];
    CGSize initialSize = CGSizeMake(0, 0); // replace with your value
    [self scaleRoundedRectToSize:initialSize];
    }

    - (void) scaleRoundedRectToSize:(CGSize)size {
    _roundedRect.xScale = _roundedRect.xScale / _roundedRect.frame.size.width * size.width;
    _roundedRect.yScale = _roundedRect.yScale / _roundedRect.frame.size.height * size.height;
    }


    @end

    关于ios - SpriteKit -- 更改 SKShapeNode 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29374852/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com