1

我有一个 Tile 类,它是 SKShapeNode 的子类

@interface Tile : SKShapeNode

我按如下方式实例化该类:

//  Tile.h
-(instancetype) addHiddenTileToSpace:(NSString *)letter withIndex:(int)i withPositionInWord:(int)p;

在我的实现文件中,我有

//  Tile.m
-(instancetype) addHiddenTileToSpace:(NSString *)letter withIndex:(int)i withPositionInWord:(int)p{
if(self == [super init] ){
    self.name = @"Tile";
   // self.hidden = YES;
    if (p == 0) {
        self.firstLetter = YES;
    }
    else{
        self.firstLetter = NO;
    }
    self.positionInAnswer = i;
    self.character = letter;

    [self setPath:CGPathCreateWithRoundedRect(CGRectMake(0, 0, 60, 60), 4, 4, nil)];
    self.strokeColor = self.fillColor = [UIColor colorWithRed:66.0f/255.0f
                                                        green:74.0f/255.0f
                                                         blue:84.0f/255.0f
                                                        alpha:1];
    SKLabelNode *characterNode = [[SKLabelNode alloc] initWithFontNamed:@"Avenir-Medium"];
    characterNode.text = [letter uppercaseString];
    characterNode.fontSize = 40;
    characterNode.fontColor = [UIColor colorWithRed:216.0f/255.0f
                                              green:216.0f/255.0f
                                               blue:216.0f/255.0f
                                              alpha:1];
    characterNode.position = CGPointMake(30, 15);
    [self addChild:characterNode];
}
return self;

}

问题是我想为该节点设置动画/缩放,但它从节点的坐标 (0,0) 缩放,而不是从它的中心缩放。我在其他地方读到我应该使用该+ (instancetype)shapeNodeWithPath:(CGPathRef)path centered:(BOOL)centered方法并将中心设置为 YES

但是,在我上面实例化的方法中,我不确定如何使用 shapeNodeWithPath 方法初始化 SKSHapeNode。还是有其他方法可以设置 Tile.center = YES;

4

1 回答 1

1

我认为你在哪里画你的形状会解决你的问题。您从 0,0 开始绘制,这将是节点的中心,看起来您也在定位标签以弥补这一点。这样的事情可能会有所帮助。

...
[self setPath:CGPathCreateWithRoundedRect(CGRectMake(-30, -30, 60, 60), 4, 4, nil)];
//or it could be [self setPath:CGPathCreateWithRoundedRect(CGRectMake(-30, 30, 60, 60), 4, 4, nil)];
...
characterNode.position = CGPointMake(0, 15);
...

现在,当您缩放时,所有内容实际上都应该在节点的中心,而不是偏移 30。我还没有测试过这个理论,但它应该可以解决定位和缩放问题。

祝你好运,希望能有所帮助。

于 2015-03-02T23:14:24.783 回答