我想知道是否有任何方法可以在SKLabelNode之外设置一个图标(因为我需要使用SKAction
来移动此标签),如下所示:
我发现的所有内容都是使用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)
}
}
}
}
答案 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);
});
});