2014-11-04 20 views
16

Właśnie zacząłem robić ios rozwój z szybkim i nie mogę wymyślić jak narysować koło. Próbuję tylko narysować okrąg, ustawić go na zmienną i wyświetlić na ekranie, aby móc później użyć go jako głównego odtwarzacza. Czy ktoś mógłby mi powiedzieć, jak to zrobić, lub podać mi kod?Jak narysować okrąg w szybkim użyciu spriteKit?

znalazłem ten kod 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) 

ale kiedy kładę to na Xcode i uruchomić nic aplikacja pojawia się w scenie gry.

+1

W którym momencie pan nazywa się kod? – ZeMoon

+1

Jeśli używasz kodu na symulatorze iPhone'a, nie widzisz okręgu, ponieważ jego pozycja jest poza zasięgiem widoku. Spróbuj użyć circle.position = CGPointMake (100,100) lub innej wartości – ZeMoon

+0

Dziękuję ZeMoon, który był głupim błędem, którego nie zauważyłem. Ustawiłem ją na 100,100 i teraz to widzę. Dzięki jeszcze raz. Dziękuję również 0x141E! – elpita

Odpowiedz

27

screenshot

Jeśli chcesz po prostu wyciągnąć jeden prosty okrąg w pewnym momencie to w ten sposób:

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) 
} 

Poniższy kod rysuje okrąg gdzie dotyka użytkowników. Możesz zastąpić domyślny kod iOS SpriteKit Project "GameScene.swift" poniższym kodem.

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

Idealnie nie chcesz używać CGPointMake. Używanie CGPoint jest preferowane w Swift. –

0

spróbować

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

sprawdzić swój kod działa, ale co może dzieje jest piłka znika, ponieważ masz dynamiczny jak prawdziwe. wyłącz i spróbuj ponownie. piłka znika ze sceny.

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) 
Powiązane problemy