2013-11-03 64 views
2

我開始使用新的Spritekit框架開發Xcode中的Tower防禦項目,並且我想在玩家創建的任何塔上添加一個可見半徑(圓圈)。CGContextAddArc:如何創建圈子?

因此,我創建了下面的代碼:

// Place Towers 
-(void)mouseUp:(NSEvent *)theEvent { 
    /* Called when a mouse click occurs */ 

    CGPoint location = [theEvent locationInNode:self]; 

    SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"tower"]; 

    sprite.position = location; 
    sprite.scale = 1.5; 

    CGContextRef myContext = [[NSGraphicsContext currentContext] graphicsPort]; 
    CGContextAddArc(myContext, location.x, location.y, 10, 0, M_PI*2, YES); 
    CGContextSetRGBStrokeColor(myContext, 0, 0, 225, 0); 

    [self addChild:sprite]; 

} 

我不熟悉的角度和其他的東西,因爲我做這行的第一次,所以我只是猜測,它應該像那。我很確定我錯過了什麼。

感謝您的任何建議(我等待一些偉大的批評)。

+1

它會產生預期的結果?如果不是,你會得到什麼結果,你期望什麼? - *「我只是猜測它應該是這樣的」*根本不是問題! –

+0

它不產生任何東西,只是精靈本身,沒有圈子..對不起,1,在這裏發佈時間.. – Ferologics

+1

爲什麼不使用SKShapeNode? https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKShapeNode_Ref/Reference/Reference.html – prototypical

回答

4

直接從SpriteKit編程指南:

SKShapeNode *ball = [[SKShapeNode alloc] init]; 

CGMutablePathRef myPath = CGPathCreateMutable(); 
CGPathAddArc(myPath, NULL, 0,0, 15, 0, M_PI*2, YES); 
ball.path = myPath; 

ball.lineWidth = 1.0; 
ball.fillColor = [SKColor blueColor]; 
ball.strokeColor = [SKColor whiteColor]; 
ball.glowWidth = 0.5; 
+0

我試過上面的代碼(改變位置),sysnthetized myPath等。沒有:/可能是我的背景圖像疊加它? – Ferologics

+0

我試過NSLog(@「Ball created!」),如果函數運行了,它會,但它根本不顯示任何東西。 – Ferologics

+3

我想通了:D忘了[self addChild:ball] – Ferologics

2

它可能會更容易使用CGContextStrokeEllipseInRect()。所以,如果你想半徑爲10的圓,在(X,Y)爲中心將是:

const CGFloat color[] = { 0, 0, 1, 1 }; // Alpha should be 1, not 0! 
CGContextSetStrokeColor (myContext, color); 
CGContextStrokeEllipseInRect (myContext, CGRectMake(x - 10, y - 10, 20, 20)); 
+0

是的,它應該,我不知道我是否按照你的意思去得到它,所以如果你可以發佈一些代碼或任何東西?它會很棒 – Ferologics

+0

實際上,我只是意識到有一個'CGContextStrokeEllipseInRect()'它一次完成筆畫! – user1118321