播放期间节点消失显示错误...线程1:EXC_BAD_ACCESS(代码=,地址= 0x0)

时间:2016-07-31 13:19:52

标签: ios swift sprite-kit skaction

我使用SKAction来缩放节点。玩游戏约2分钟后,节点消失。基本的游戏玩法是你必须继续触摸节点以缩小它,否则它会增长。所以,如果它不存在,你就无法玩。我不确定为什么节点现在消失了。

创建节点的代码:

node.create(mainScreenview, position: CGPoint(x: frame.size.width / 2, y: frame.size.height / 2), size: CGSize(width: 150, height: 150), color: greyColour, name: "Test")


func nodeAction() {
    node.runAction(SKAction.scaleBy(10.0, duration: 8.5))
}

比较正确答案的功能

 func compareNodes() {

if !nodesToCheck.isEmpty {
  let checkThisNode = nodesToCheck[0] as! SKSpriteNode
  if checkThisNode.name == node.name {
    node.physicsBody = nil
    node.removeAllActions()

    score += 1
    nodesToCheck.removeAll()
    changeSizeToSmall()


  } else {
    gameOver()
  }
}

}

func changeSizeToSmall() {

' node.size = CGSize(宽度:60,身高:60)'

现在SKAction.resizeToWidth(60, height: 60, duration: 1.0))

此行的错误消息

node.physicsBody = SKPhysicsBody(circleOfRadius: node.size.width / 2)
  

线程1:EXC_BAD_ACCESS(代码=,地址= 0x0)

并始终突出显示节点的物理主体。这些线之间没有任何内容 和节点代码的其余部分

    node.physicsBody?.affectedByGravity = false
    node.physicsBody?.categoryBitMask = PhysicsCategory.node.rawValue
    node.physicsBody?.contactTestBitMask = PhysicsCategory.bird.rawValue
    node.physicsBody?.collisionBitMask = 0
}

该应用程序因该错误而崩溃。在游戏过程中,内存使用量不会发生太大的变化,但确实会增加。我已经评论了SKAction系列,我可以随意玩这款游戏。所以我明白缩小节点并添加一个物理体会占用大量内存,但我不知道该怎么做。我已经尝试在每次调用节点后删除节点并重新创建节点。尝试使用仪器进行调试以查看什么是dealloc,寻找参考周期,但我真的不确定我在寻找什么。

我该怎么做才能阻止这种情况发生?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我更改了节点的size属性,以便通过SKAction更改它,而这似乎有效。

SKAction.resizeToWidth(60, height: 60, duration: 1.0))