首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS子类SKShapeNode

iOS子类SKShapeNode
EN

Stack Overflow用户
提问于 2015-07-18 18:37:48
回答 1查看 215关注 0票数 1

如何对没有实例方法初始化器的SKShapeNode进行子类化?我唯一能想到的就是:

代码语言:javascript
复制
+ (id)withColor:(UIColor *)aColor radius:(CGFloat)aRadius {
    return [[self alloc] initWithColor:aColor radius: aRadius];
}

- (id)initWithColor:(UIColor *)aColor radius:(CGFloat)aRadius {
    self = (CAButtonNode *)[SKShapeNode shapeNodeWithCircleOfRadius:aRadius];
    self.fillColor = aColor;
    self.strokeColor = [UIColor clearColor];

    return self;
}

在这种情况下,selfSKShapeNode而不是CAButtonNode的实例。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-07-18 18:54:29

如果你问我,我不确定这是否是正确的解决方案,这是非常不方便的,但它确实有效。我把这个留给任何可能遇到类似问题的人。

您需要做的是像通常一样调用[super init],然后手动设置节点的路径。下面的内容基本上模仿了SKShapeNode类方法shapeNodeWithCircleOfRadius:

代码语言:javascript
复制
- (id)initWithColor:(UIColor *)aColor radius:(CGFloat)aRadius {
    if (self = [super init]) {
        self.path = CGPathCreateWithEllipseInRect(CGRectMake(-aRadius, -aRadius, aRadius * 2, aRadius * 2), NULL);
        self.fillColor = aColor;
        self.strokeColor = [UIColor clearColor];
    }

    return self;
}

如果有人知道,我很好奇他们为什么不像在大多数其他类中那样包括实例方法初始化器。

干杯!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31494317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档