SKShapeNode将SKAction设置为从中心扩展

时间:2015-03-02 17:20:06

标签: ios sprite-kit skshapenode

我有一个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;

1 个答案:

答案 0 :(得分:0)

我认为你画出你的形状会解决你的问题。您是从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点。我还没有测试过这个理论,但是它应该解决定位和缩放问题。

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