在SKLabelNode旁边嵌入图标

时间:2016-05-09 01:55:09

标签: ios swift sprite-kit

我想知道是否有任何方法可以在SKLabelNode之外设置一个图标(因为我需要使用SKAction来移动此标签),如下所示:

enter image description here

我发现的所有内容都是使用UILabel(here)或GitHub项目(here),我无法移动或反弹(SpriteKit-Spring)我的标签。

我在想创建一个带有图标图像的精灵节点并设置它除了coinsLabel之外的位置,但由于这个标签被用作硬币计数器,所以当它增加时它会变大;并且图标将被覆盖。

我在下面创建了这个示例项目,以便更容易可视化(当然,它没有图标。它只是通过按钮递增和移动coinsLabel。)

如果需要,可以下载here

import SpriteKit

class GameScene: SKScene {

    //Declaration
    var icon = SKSpriteNode()
    var coins = Int()
    var coinsLabel = SKLabelNode()

    var incrementButton = SKSpriteNode()

    //Setup
    func setupIcon(){

        //icon
        icon = SKSpriteNode(imageNamed: "icon")
        icon.position = CGPoint(x: self.frame.width / 1.45, y: self.frame.height / 1.075)
        icon.setScale(0.1)
    }
    func setupCoinsLabel(){

        //coinsLabel
        coinsLabel.position = CGPoint(x: self.frame.width / 150 - 300, y: 0)
        coinsLabel.setScale(12.5)
        coinsLabel.text = "0"
    }
    func setupIncrementButton(){

        //incrementButton
        incrementButton = SKSpriteNode(imageNamed: "incrementButton")
        incrementButton.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 3.15)
        incrementButton.setScale(2.0)
    }

    override func didMoveToView(view: SKView) {
        /* Setup your scene here */

        setupIcon()
        addChild(icon)

        setupCoinsLabel()
        icon.addChild(coinsLabel)

        setupIncrementButton()
        addChild(incrementButton)
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
       /* Called when a touch begins */

        //When touch buttons/screen
        for touch in touches{

            let location = touch.locationInNode(self)
            let node = nodeAtPoint(location)

            //Increment
            if node == incrementButton{

                coins += 1
                coinsLabel.text = NSString(format: "%i", coins) as String
                coinsLabel.position = CGPoint(x: self.frame.width / 150 - coinsLabel.frame.width, y: 0)
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

只需创建一个SKSpriteNode并将其作为子项添加到SKLabelNode,无论您的标签中有多少位数,您始终可以将SKSpriteNode的位置设置为SKLabel的右侧,因此重叠永远不会发生

app.get('/api/videos', function (req, res) {
    Video.find({}, {_id:0, iframe:1 }, function (err, docs) {
       res.json(docs);
    });
});