i want draw a circle and put a text in it. what can i do?
If i moved or resized the circle , text move or resize too
var color = UIColor(red: 0x00, green: 0x44, blue: 0x44, alpha: 1)
var Circle = SKShapeNode(circleOfRadius: 100 )
Circle.position = CGPointMake(frame.midX, frame.midY)
Circle.strokeColor = SKColor.blackColor()
Circle.glowWidth = 1.0
Circle.fillColor = color
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!";
myLabel.fontSize = 60;
myLabel.position = CGPointMake(frame.midX, frame.midY)
myLabel.fontColor = UIColor.blackColor()
self.addChild(Circle)
One way to drag both at once is you can add both into same view and after that you change position of both with touch events like show into below code.
import SpriteKit
class GameScene: SKScene {
var deltaPoint = CGPointZero
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
var Circle = SKShapeNode(circleOfRadius: 100 )
override func didMoveToView(view: SKView) {
/* Setup your scene here */
var color = UIColor(red: 0x00, green: 0x44, blue: 0x44, alpha: 1)
Circle.position = CGPointMake(frame.midX, frame.midY)
Circle.strokeColor = SKColor.blackColor()
Circle.glowWidth = 1.0
Circle.fillColor = color
myLabel.text = "Hello, World!";
myLabel.fontSize = 20
myLabel.position = CGPointMake(Circle.frame.midX, Circle.frame.midY)
myLabel.fontColor = UIColor.blackColor()
// Add them into same scene
self.addChild(Circle)
self.addChild(myLabel)
}
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
if let touch = touches.first as? UITouch {
let currentPoint = touch.locationInNode(self)
let previousPoint = touch.previousLocationInNode(self)
deltaPoint = CGPointMake(currentPoint.x - previousPoint.x, currentPoint.y - previousPoint.y)
}
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
deltaPoint = CGPointZero
}
override func touchesCancelled(touches: Set<NSObject>!, withEvent event: UIEvent!) {
deltaPoint = CGPointZero
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
var newPoint = CGPointMake(self.myLabel.position.x + self.deltaPoint.x, self.myLabel.position.y + self.deltaPoint.y)
// you can drag both item at same time
myLabel.position = newPoint
Circle.position = newPoint
deltaPoint = CGPointZero
}
}
UPDATED: Using your full example.
Not a SpritKit user, but I believe that each node has an .addChild()
.
So it should be possible to add it as a child to your circle:
var color = UIColor(red: 0x00, green: 0x44, blue: 0x44, alpha: 1)
var Circle = SKShapeNode(circleOfRadius: 100 )
Circle.position = CGPointMake(frame.midX, frame.midY)
Circle.strokeColor = SKColor.blackColor()
Circle.glowWidth = 1.0
Circle.fillColor = color
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!";
myLabel.fontSize = 60;
// Using half of the circle (center point)
myLabel.position = CGPointMake(Circle.frame.midX, Circle.frame.midY)
myLabel.fontColor = UIColor.blackColor()
Circle.addChild(myLabel)
self.addChild(Circle)
Position would then be relative to the circles frame.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With