2016-09-19 2 views
0

Я немного экспериментировал с комплектом спрайтов, и я заметил, что, когда я позволяю своему приложению бежать некоторое время, он падает.Сбой приложений: проблема с памятью?

То, что я пытаюсь сделать, это нарисовать линию, которая следует моему движению игрока, я сделал это так:

var ref: CGMutablePathRef = CGPathCreateMutable() 
var shapeLine: SKShapeNode! 

override func update(){ 

shapeLine.removeFromParent() 

CGPathAddLineToPoint(ref, nil, player.position.x, player.position.y) 

shapeLine = SKShapeNode(path: ref) 
shapeLine.lineWidth = 3 
shapeLine.path = ref 

addChild(shapeLine) 
} 

И это работает довольно хорошо, я убираю каждый раз узла, обновив путь и создание другого узла с новым путем.

Дело в том, что через несколько секунд (около 25) он сработает. Узлы являются постоянными, так как я добавляю и удаляю каждый раз один. Частота кадров начинает снижаться прямо перед сбоем и идет от 30 кадров в секунду до 20 кадров в секунду.

То, что я нахожу странным, - это использование памяти, оно много увеличивает, даже если оно используется около 800 МБ перед сбоем.

Есть ли что-то, что я забываю, или это просто, что Путь слишком много увеличивает, чтобы его обрабатывали?

+0

Почему бы вам не попробовать в качестве эксперимента просто изменить путь уже существующей 'shapeLine', чтобы увидеть, является ли часть проблемы непрерывным созданием нового' SKShapeNode'. Другими словами, создайте 'shapeLine' один раз, а затем для других времен, просто обновите путь. –

+0

Уже пробовал, дает тот же результат:/ – DevX10

+0

Как часто этот пробег? Каждый кадр? Например, в течение 25 секунд, сколько раз вызывалось 'update'? –

ответ

0

К сожалению, SKShapeNode прослушивается, есть много ошибок вокруг этого компонента библиотеки, большинство из них сообщается here.

Вы можете конвертировать SKShapeNode в текстуру (textureFromNode), чем использовать ее с SKSpriteNode.

+0

Привет, спасибо за ответ, что вы имеете в виду, используя «textureFromNode», не могли бы вы привести пример о том, как использовать это и позволить ему работать, поскольку мне не удалось справиться – DevX10

Смежные вопросы