【问题标题】:SKLabelNode drawing behind SKSpriteNodeSKSpriteNode 后面的 SKLabelNode 绘图
【发布时间】:2014-03-20 06:48:22
【问题描述】:

为什么我的 SKLabelNode 总是在我的 SKSpriteNode 后面绘制,即使我在精灵之后添加它?

    _startButton = [SKSpriteNode spriteNodeWithImageNamed:@"start@2x.png"];
    _startButton.position = CGPointMake(self.frame.size.width/2,self.frame.size.height/2);
    _startButton.name = @"start";
    _startButton.zPosition = 1.0;
    [self addChild:_startButton];

    SKLabelNode *start = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
    start.text = @"Start";
    start.fontSize = 40;
    start.fontColor = [SKColor whiteColor];
    start.position = CGPointMake(self.size.width/2, self.size.height/2);
    [self addChild:start];

【问题讨论】:

  • Sprite Kit 不能这样工作,您应该使用 zPosition 管理节点位置,_startButton.zPosition = 1;开始 zPosition = 2;应该可以的。
  • 不,不需要 zPosition。如果您将 zPosition 保留为默认值 (0),则分别对多个节点使用相同的 zPosition 值,则子数组中的顺序对具有相同 zPosition 值(和相同父节点)的节点生效。

标签: ios objective-c sprite-kit


【解决方案1】:

我很确定默认的 zPosition 为 0,这意味着您的精灵(zPosition 为 1)将出现在标签的前面。尝试将SKLabelNode zPosition 设置为 2。较大的正数将项目放在具有较小数字的项目之上。

默认值为 0.0。正 z 轴朝向 查看器,以便具有较大 z 值的节点更靠近查看器。 渲染节点树时,每个节点的高度(绝对 坐标)被计算,然后树中的所有节点都被渲染 从最小 z 值到最大 z 值。如果多个节点共享 z 位置相同,这些节点被排序以便绘制父节点 在他们的孩子之前,并且兄弟姐妹按照以下顺序呈现 他们出现在他们父母的孩子数组中。命中测试已处理 顺序相反。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多