Sprite Kit SKShapeNode 创建两个节点而不是一个
Posted
技术标签:
【中文标题】Sprite Kit SKShapeNode 创建两个节点而不是一个【英文标题】:Sprite Kit SKShapeNode creating two nodes instead of one 【发布时间】:2013-10-18 17:50:08 【问题描述】:我是 ios 的 Sprite Kit 新手。我想在我的场景中添加一个形状节点。场景是灰色的,形状是场景中心的一个白色圆圈。我的场景代码如下。由于某种原因,将节点添加到场景的最后一行导致节点计数增加了 2。如果我不考虑那条线,就会有 0 个节点,只有一个灰色的场景。但是如果我离开这条线,那么圆圈就在那里,但节点数是 2。这是一个大问题,因为当我向圆圈中添加更多节点时,节点数是应有的两倍,并且会减慢速度。有谁知道问题是什么?非常感谢!
@interface ColorWheelScene()
@property BOOL contentCreated;
@end
@implementation ColorWheelScene
- (void)didMoveToView:(SKView *)view
if(!self.contentCreated)
[self createSceneContents];
self.contentCreated = YES;
- (void)createSceneContents
self.backgroundColor = [SKColor grayColor];
self.scaleMode = SKSceneScaleModeAspectFit;
SKShapeNode *wheel = [[SKShapeNode alloc]init];
UIBezierPath *path = [[UIBezierPath alloc] init];
[path moveToPoint:CGPointMake(0.0, 0.0)];
[path addArcWithCenter:CGPointMake(0.0, 0.0) radius:50.0 startAngle:0.0 endAngle:(M_PI*2.0) clockwise:YES];
wheel.path = path.CGPath;
wheel.fillColor = [SKColor whiteColor];
wheel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[self addChild:wheel];
@end
【问题讨论】:
您是否验证过创建场景内容真的被调用过一次?也许放一个登录或断点 是的。我在那里放了一个日志,它只被调用一次。 所以如果我理解正确的话,如果你添加这个形状一次,它说它们是'两个'节点,如果你添加它两次它会说它们是'四个'节点。? 是的。我只是这样做了 - 添加了两个形状,它是 4 个节点。 【参考方案1】:您将获得 +1 节点以将填充添加到圆圈
所以,
- (void) makeACircle
SKShapeNode *ball;
ball = [[SKShapeNode alloc] init];
// stroke only = 1 node
// CGMutablePathRef myPath = CGPathCreateMutable();
// CGPathAddArc(myPath, NULL, 0,0, 60, 0, M_PI*2, YES);
// ball.path = myPath;
// ball.position = CGPointMake(200, 200);
// [self addChild:ball];
// stroke and fill = 2 nodes
CGMutablePathRef myPath = CGPathCreateMutable();
CGPathAddArc(myPath, NULL, 0,0, 60, 0, M_PI*2, YES);
ball.path = myPath;
ball.fillColor = [SKColor blueColor];
ball.position = CGPointMake(200, 200);
[self addChild:ball];
【讨论】:
啊,这就是问题所在。非常感谢 Smick! 竖起大拇指 :-) 是的,它仍然很奇怪,但是......如果您对答案感到满意,请勾选正确,这样问题就解决了。以上是关于Sprite Kit SKShapeNode 创建两个节点而不是一个的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Sprite Kit 创建具有 3D 效果的戒指?