2014-01-06 3 views
0

Я создаю приложение для игрового типа, используя SpriteKit. В одной из сцен я хочу создать область, в которой пользователь сможет рисовать. К сожалению, использование SKShapeNodes создает зубчатые линии и вызывает падение FPS. Я думал об использовании метода Core Graphics, но мне нужно, чтобы линии были частью узла. Так есть ли способ использовать узел как холст для CG?Элементы CoreGraphics внутри SKNode

ответ

0

Вы можете нарисовать на CGImage и создать SKTexture от использования textureWithCGImage:

+0

Чувствует себя немного взломанным. Я надеялся, что будет более элегантное решение, но я думаю, мне придется пойти с твоим предложением. Благодарю. – smoothRenegade

+1

Это совершенно законно. Если вы используете cocos2d, вы по существу делаете то же самое, рисуя на CCRenderTexture, а затем создавая спрайт из текстуры (или напрямую используя текстуру, это основное отличие). – LearnCocos2D

1

От SKNode documentation:

В отличии от взглядов, вы не можете создать SKNode подклассов, которые выполняют пользовательский рисунок.

Поэтому я думаю, что ответ нет, вы не можете этого сделать.

У каждого узла есть свойство scene, а у scene есть ссылка на содержащийся view. Но то, что ускоряет анимацию спрайтов, заключается в том, что спрайты консервированы - изображения уже нарисованы и просто нужно скопировать. Типы узлов, отличные от SKSpriteNode, также оптимизированы для скорости. Соответственно, в классах спрайтов нет методов рисования - нет возможности для вашего кода выполнять пользовательский чертеж.

+0

Ну, вот что я боялся. Но это имеет смысл. – smoothRenegade

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