2013-10-04 31 views
2

我有一个SKShapeNode和一个通用SKNode下的标签。如果我尝试缩放该节点,它的位置无理变化!如果我试图缩放它所包含的节点,它可以正确缩放,但不能从中心缩放,因此它会向上和向右扩展。从中心缩放SKShapeNode?

我在做什么错? 首先规模 First before scale

规模 After scale

通知后,之前它的位置向上移动。无法弄清楚为什么,即使我将其作为一项行动来做。另外,位置不改变基于日志,但它出现在框架变得更大(虽然这是预期)

步骤重新创建问题:

一套高度和宽度 @h = 50 @w = 256

创建与矩形的高度和宽度 CGRectMake(0,0,@w,@h)为矩形 UIBezierPath.bezierPathWithRect(矩形)

GET路径.CGPath

创建路径skshape节点,设置位置

antialiased: false, 
    lineWidth: 1.0, 
    strokeColor: SKColor.blackColor, 
    fillColor: SKColor.whiteColor 

创建sklabel,垂直居中对齐,设置位置

创建通用SKNode,没有属性,将其添加skshapenode和sklabel儿童

规模通用的SKNode。

+0

你能添加一张图片来帮助描述你的问题吗?你有没有尝试改变锚点? – DogCoffee

+0

似乎没有SKShapeNode和SKNode的定位点。 – AwDogsGo2Heaven

+0

你能分享一些代码吗? – DogCoffee

回答

0

试试这个

SKLabelNode *labNode = [SKLabelNode labelNodeWithFontNamed:@"Arial"]; 
labNode.fontSize = 12.0f; 
labNode.fontColor = [SKColor blackColor]; 
labNode.text = @"SMASH"; 


SKSpriteNode *topWithText = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(100, 30)]; 
topWithText.position = CGPointMake(100, 110); 
[topWithText addChild:labNode]; 

SKSpriteNode *bottom = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(100, 10)]; 
bottom.position = CGPointMake(100, 100); 

[self addChild:topWithText]; 
[self addChild:bottom]; 

[topWithText runAction:[SKAction sequence:@[ 
             [SKAction waitForDuration:3.0], 
             [SKAction scaleBy:3.0 duration:3] 
             ]]]; 
+0

同样的问题令人遗憾的是,我试图得到一个屏幕截图(不知道它是否会帮助,虽然) – AwDogsGo2Heaven

+0

无法弄清楚为什么你的扩展权和我的不扩展。我把我的位置搞乱了,我为SKNode而不是它的孩子设置了位置,现在它从右下角向上和向右缩放。我可以用你说的方法尝试SKSpriteNode。 – AwDogsGo2Heaven

+0

你不能制作图像与“粉碎”等?你为什么决定按你的方式去做。 – DogCoffee

0

我有一个类似的问题:我创建了一个SKShapeNode.ellipseInRect看起来完全正常时,我并不需要它的规模。然而,只要我试图缩小它以适应它背后的文字,它会随机向屏幕左下方缩小!

我做了一些调试,让我感到惊讶的是,即使椭圆在屏幕的左上角,位置也被设置为(0,0)!然后我意识到,通过使用矩形进行初始化,“锚点”(即使SKShapeNodes技术上没有它们)也处于(0,0)。这种行为可以解释我朝这一点收缩,并且你从这一点开始不断增长。

对我来说,解决这个问题的方法不是把我的位置放在矩形中,而是在之后设置位置。然后它缩放我的节点的中心点而不是屏幕原点。希望有所帮助!