首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为SKCropNode分配多个掩码

为SKCropNode分配多个掩码
EN

Stack Overflow用户
提问于 2016-04-30 00:06:13
回答 1查看 594关注 0票数 3

举个例子,我有一个圆圈,它在屏幕上向左然后向右移动。我希望只有在两个特定的正方形(maskNodes)中,圆圈才是可见的。我正在使用SKCropNode来尝试实现这一点,但是SKCropNode掩码只允许我分配一个掩码。是否有人知道为SKCropNode分配两个或多个掩码的方法,或者如果可能的话。谢谢!

代码语言:javascript
复制
override func didMoveToView(view: SKView) {

    anchorPoint = CGPointMake(0.5, 0.5)
    backgroundColor = UIColor.whiteColor()

    let mask1 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(50, 50))
    mask1.position.x = -100

    let mask2 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(50, 50))
    mask2.position.x = 100

    let cropNode = SKCropNode()
    cropNode.maskNode = mask1 // && mask2
    addChild(cropNode)

    let circle = SKShapeNode(circleOfRadius: 25)
    circle.fillColor = UIColor.blackColor()
    cropNode.addChild(circle)


    // Move Circle

    let moveLeft = SKAction.moveToX(-frame.size.width/2, duration: 2)
    let moveRight = SKAction.moveToX(frame.size.width/2, duration: 2)
    let seq = SKAction.repeatActionForever(SKAction.sequence([moveLeft, moveRight]))

    circle.runAction(seq)

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-30 00:21:17

解决了这个问题,只需将两个掩码添加到父模式中,然后将父掩码指定为SKCropNode掩码。

代码语言:javascript
复制
override func didMoveToView(view: SKView) {

    anchorPoint = CGPointMake(0.5, 0.5)
    backgroundColor = UIColor.whiteColor()

    let maskParent = SKSpriteNode()

    let mask1 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(50, 50))
    mask1.position.x = -100
    maskParent.addChild(mask1)

    let mask2 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(50, 50))
    mask2.position.x = 100
    maskParent.addChild(mask2)

    let cropNode = SKCropNode()
    cropNode.maskNode = maskParent

    addChild(cropNode)

    let circle = SKShapeNode(circleOfRadius: 25)
    circle.fillColor = UIColor.blackColor()
    cropNode.addChild(circle)

    // Move Circle

    let moveLeft = SKAction.moveToX(-frame.size.width/2, duration: 2)
    let moveRight = SKAction.moveToX(frame.size.width/2, duration: 2)
    let seq = SKAction.repeatActionForever(SKAction.sequence([moveLeft, moveRight]))

    circle.runAction(seq)

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36949258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档