Получить размер SKView внутри пользовательского класса в iOS

Я пытаюсь сделать игру со Sprite Kit на iOS. У меня есть UIViewController с SKView, и я использую один SKScene.

Теперь в моей сцене я инициализирую класс Player, который является просто написанным мной собственным классом, это подкласс NSObject. Проблема в том, что мне нужно знать размер экрана внутри моего пользовательского класса. Из того, что я могу сказать, единственный способ узнать размер экрана внутри моего пользовательского класса - передать его из сцены в инициализаторе проигрывателя.

Есть ли более элегантный способ сделать это? Спасибо.


person Flubadoodoo    schedule 08.10.2013    source источник


Ответы (2)


Вы можете просто получить класс игрока от SKNode. Затем вы можете добавить его в иерархию сцен, и тогда у вас будет ссылка на сцену.

У вас все еще может быть класс «модель», содержащий данные и методы игрока, хранящиеся внутри пользовательского класса узла игрока.

С точки зрения MVC и «игрока», являющегося моделью, на самом деле ему не нужно знать размер экрана, потому что это свойство представления. Может быть, у вас просто есть это задом наперед, и вы действительно хотите что-то сделать на стороне просмотра с информацией в классе игрока?

person LearnCocos2D    schedule 08.10.2013
comment
Я пытаюсь сделать так, чтобы игрок вращался вокруг центральной точки экрана с определенными орбитами. Когда игрок нажимает на правую часть экрана, он переходит с одной орбиты (может быть, радиусом 50 пикселей) на следующую орбиту (радиусом 100 пикселей). Как вы сказали, возможно, мне следует пересмотреть свою структуру, спасибо! - person Flubadoodoo; 08.10.2013

Вы можете просто использовать [UIScreen mainScreen].bounds в своем классе Player. Проверьте также свойства applicationFrame и scale UIScreen.

Вы можете возразить, что Player знать размер экрана не слишком элегантно, но, тем не менее, это способ сделать это без передачи информации в Player.

person Jonathan Arbogast    schedule 08.10.2013
comment
Да, это работает, и я приму во внимание то, что вы сказали, спасибо! - person Flubadoodoo; 08.10.2013