2014-11-04 10 views
16

Ich habe gerade begonnen, ios-Entwicklung mit swift zu tun und ich kann nicht herausfinden, wie man einen Kreis zeichnet. Ich versuche nur einen Kreis zu zeichnen, setze ihn auf eine Variable und zeige ihn auf dem Bildschirm an, damit ich ihn später als Hauptspieler verwenden kann. Kann mir jemand sagen, wie man das macht oder mir den Code dafür liefert?Wie zeichne ich einen Kreis in swift mit SpriteKit?

fand ich diesen Code online:

var Circle = SKShapeNode(circleOfRadius: 40) 
Circle.position = CGPointMake(500, 500) 
Circle.name = "defaultCircle" 
Circle.strokeColor = SKColor.blackColor() 
Circle.glowWidth = 10.0 
Circle.fillColor = SKColor.yellowColor() 
Circle.physicsBody = SKPhysicsBody(circleOfRadius: 40) 
Circle.physicsBody?.dynamic = true //.physicsBody?.dynamic = true 
self.addChild(Circle) 

aber wenn ich diese auf Xcode setzen und führen Sie die Anwendung nichts kommt in der Spielszene auf.

+1

An welchem ​​Punkt haben Sie den Code aufgerufen? – ZeMoon

+1

Wenn Sie den Code auf dem iPhone-Simulator ausführen, können Sie den Kreis nicht sehen, da seine Position außerhalb der Grenzen der Ansicht liegt. Versuchen Sie es mit circle.position = CGPointMake (100,100) oder einem anderen Wert – ZeMoon

+0

Danke ZeMoon, das war ein dummer Fehler, den ich nicht bemerkt habe. Ich setze es auf 100.100 und jetzt kann ich es sehen. Danke noch einmal. Auch danke 0x141E! – elpita

Antwort

27

screenshot

Wenn Sie nur an einem bestimmten Punkt einen einfachen Kreis zeichnen wollen dann ist es dies:

func oneLittleCircle(){ 

    var Circle = SKShapeNode(circleOfRadius: 100) // Size of Circle 
    Circle.position = CGPointMake(frame.midX, frame.midY) //Middle of Screen 
    Circle.strokeColor = SKColor.blackColor() 
    Circle.glowWidth = 1.0 
    Circle.fillColor = SKColor.orangeColor() 
    self.addChild(Circle) 
} 

Der Code unten zieht einen Kreis, wo der Benutzer berührt. Sie können den voreingestellten iOS SpriteKit Project "GameScene.swift" Code durch den folgenden ersetzen.

screenshot

// 
// Draw Circle At Touch .swift 
// Replace GameScene.swift in the Default SpriteKit Project, with this code. 


import SpriteKit 

class GameScene: SKScene { 
override func didMoveToView(view: SKView) { 
    /* Setup your scene here */ 
    scene?.backgroundColor = SKColor.whiteColor() //background color to white 

} 

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 

    for touch: AnyObject in touches { 
     let location = touch.locationInNode(self) 
     makeCirlceInPosition(location) // Call makeCircleInPostion, send touch location. 
    } 
} 


// Where the Magic Happens! 
func makeCirlceInPosition(location: CGPoint){ 

    var Circle = SKShapeNode(circleOfRadius: 70) // Size of Circle = Radius setting. 
    Circle.position = location //touch location passed from touchesBegan. 
    Circle.name = "defaultCircle" 
    Circle.strokeColor = SKColor.blackColor() 
    Circle.glowWidth = 1.0 
    Circle.fillColor = SKColor.clearColor() 
    self.addChild(Circle) 
} 
    override func update(currentTime: CFTimeInterval) { 
    /* Called before each frame is rendered */ 
}} 
+2

Idealerweise möchten Sie CGPointMake nicht verwenden. Die direkte Verwendung von CGPoint wird in Swift bevorzugt. –

0

versuchen diese

var circle : CGRect = CGRectMake(100.0, 100.0, 80.0, 80.0) //set your dimension 
var shapeNode : SKShapeNode = SKShapeNode() 
shapeNode.path = UIBezierPath.bezierPathWithOvalInRect(circle.CGPath) 
shapeNode.fillColor = SKColor.redColor() 
shapeNode.lineWidth = 1 //set your border 
self.addChild(shapeNode) 
0

ich Ihren Code überprüfen funktioniert es aber, was vielleicht passiert, ist die Kugel verschwindet, weil man als wahre Dynamik haben. schalte es aus und versuche es erneut. der Ball fällt aus der Szene.

var Circle = SKShapeNode(circleOfRadius: 40) 
    Circle.position = CGPointMake(500, 500) 
    Circle.name = "defaultCircle" 
    Circle.strokeColor = SKColor.blackColor() 
    Circle.glowWidth = 10.0 
    Circle.fillColor = SKColor.yellowColor() 
    Circle.physicsBody = SKPhysicsBody(circleOfRadius: 40) 
    Circle.physicsBody?.dynamic = false //set to false so it doesn't fall off scene. 
    self.addChild(Circle) 
3

Swift 3

let Circle = SKShapeNode(circleOfRadius: 100) // Create circle 
Circle.position = CGPoint(x: 0, y: 0) // Center (given scene anchor point is 0.5 for x&y) 
Circle.strokeColor = SKColor.black 
Circle.glowWidth = 1.0 
Circle.fillColor = SKColor.orange 
self.addChild(Circle) 
Verwandte Themen