从SKSpriteNode类中获取GameScene大小

时间:2014-12-18 09:42:33

标签: ios swift sprite-kit cgpoint

我在Swift中拖动SKSpriteNode。拖动精灵后我想将它恢复到原来的位置。做这个的最好方式是什么?现在,我试图将它直接移回指定位置(见代码)。但是,我无法抓住场景的屏幕尺寸。使用我当前运行的代码,它将节点更多地返回到我想要的左下角(我相信这是因为我引用了self)。如何获得场景的大小?

我尝试使用scene.frame.size.width,但仅使用self.frame成功。使用scene.frame.size.width会返回"SKScene? does not have a member 'frame'"

这是我SKSpriteNode类文件中的当前函数:

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    for touch in touches {
        zPosition = 0
        let newPosition = CGPointMake(CGRectGetMaxX(scene.frame.size.width) * 0.14 , CGRectGetMidY(scene.frame.size.height) * 0.25)
        removeAllActions()
        let returnSprite = SKAction.moveTo(newPosition, duration: 0.3)
        let dropDown = SKAction.scaleTo(0.5, duration: 0.2) //Added Drop Effect

        runAction(SKAction.group([returnCard,dropDown]))
    }
}

感谢您的时间和我的关系。我是新手。

更新: 我仍然不知道如何在精灵节点内调用场景。但是,我通过在init参数中添加CGPoint并从那里引用位置来解决了这个问题。

1 个答案:

答案 0 :(得分:1)

scene.frame.size.width更改为scene.size.widthSKScene具有size属性。它还具有view的属性。请注意,size是分数。如果您正在进行数学计算以根据大小生成位置,则需要考虑场景的anchorPoint

默认的anchorPoint是0,0,它是视图框架矩形的左下角。这就是为什么事情“更左下角”。

我假设self.frame工作的原因是因为你在SKView课程中这样做。

相关问题