iOS 7 Sprite Kit 更改 SKAction 中的 zPosition

Posted

技术标签:

【中文标题】iOS 7 Sprite Kit 更改 SKAction 中的 zPosition【英文标题】:iOS 7 Sprite Kit change zPosition in SKAction 【发布时间】:2014-02-04 21:57:08 【问题描述】:

我有两个不同的SKSpriteNodes。第一个是静止的,第二个我想围绕第一个节点移动。我的第二个节点从屏幕外飞入,zPosition 为 11(第一个节点的 zPosition 为 10)。当第二个节点飞到屏幕的另一端时,我让节点翻转并飞回。这时候我想把zPosition改成9。

witch.position = CGPointMake(self.size.width + 200, self.size.height / 2 + 50);
witch.zPosition = 11;
[self addChild:witch];

SKAction *moveLeft = [SKAction moveToX:-200 duration:8];
SKAction *moveRight = [SKAction moveToX:self.size.width + 200 duration:8];
SKAction *moveDown = [SKAction moveToY:secondNode.position.y - 50 duration:0.3];
SKAction *moveUp = [SKAction moveToY:secondNode.position.y + 50 duration:0.3];
SKAction *flipRight = [SKAction scaleXTo:-1 duration:0];
SKAction *flipLeft = [SKAction scaleXTo:1 duration:0];
[secondNode runAction:
  [SKAction repeatActionForever:
      [SKAction sequence:
         @[moveLeft, moveDown, flipRight, CHANGEZPOSITIONHERE, moveRight, moveUp, flipLeft, CHANGEZPOSITIONHERE]]]];

我将如何更改SKAction 中间的zPosition

提前感谢您的所有建议和帮助。

【问题讨论】:

使用 runBlock: 动作 当然,谢谢。如果你回答这个问题,我会接受。 【参考方案1】:

由于 LearnCocos2D 的评论,找到了这个答案。

添加一个 runBlock:action 我能够改变 zPosition。最终代码为:

[secondNode runAction:
 [SKAction repeatActionForever:
  [SKAction sequence:
     @[moveLeft, moveDown, flipRight, 
         [SKAction runBlock:(dispatch_block_t)^()
               secondNode.zPosition = 9;
          ], moveRight, moveUp, flipLeft, 
         [SKAction runBlock:(dispatch_block_t)^()
               secondNode.zPosition = 11;
          ]]]]];

【讨论】:

以上是关于iOS 7 Sprite Kit 更改 SKAction 中的 zPosition的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 Sprite Kit如何在更改锚点时计算节点位置?

iOS 7 Sprite Kit 释放内存

iOS 7 之前的 Sprite Kit 可用性

在 removeFromParent 上 Sprite Kit iOS 7.1 崩溃

Xcode 7 Sprite Kit X Coordinate Off-Center in iOS Simulator

在 Sprite-Kit 中更改精灵图像