Как изменить цвет почтового ящика SKView при использовании scaleMode .AspectFit

Я использую стандартное полноэкранное представление SpriteKit из шаблона кода (проект новой игры iOS), и когда я использую

scene.scaleMode = .AspectFit 

чтобы убедиться, что сцена подходит, оставшаяся (почтовая ящик) область окрашена в черный цвет.

Я пробовал эти параметры, чтобы изменить цвет:

 let skView = self.view as SKView // was hoping this one would work skView.backgroundColor = UIColor.redColor() // didn't expect this would work, since scene is scaled anyways scene.backgroundColor = SKColor.redColor() 

Также попытался изменить цвет фона SKView в редакторе раскадровки на другой цвет, но не повезло.

Любые советы о том, где искать изменение цвета почтового ящика?

  • Как использовать applicationWillTerminate для определенного SKScene?
  • Основная игра быстрой / spritekit - перерисовка проблем
  • Каков наилучший способ обработки нескольких SKScenes?
  • Создайте объект, вращающийся вне круга
  • Sprite-Kit Измените изображение узла, когда экран коснется
  • Установить сенсорную область SKSpriteNode
  • Случайное число из массива без повторения одного и того же номера дважды подряд?
  • Запуск приложения SKLabelNode
  • 2 Solutions collect form web for “Как изменить цвет почтового ящика SKView при использовании scaleMode .AspectFit”

    Я думаю, что это должен быть способ установить цвет или разместить спрайты в ушах фирменных бланков … но кажется, что их нет. Кроме того, я не согласен с LearnCocos2D. В AspectFit нет ничего плохого. Он имеет свое применение.

    То, что я сделал, это использовать AspectFit, но также рассчитать размер сцены на основе размера экрана. Это не так полезно для OSX-игры, но это отлично работает для iOS.

     func createScene() -> GameScene { let screenSize = UIScreen.mainScreen().bounds.size var size:CGSize = CGSizeZero size.height = Constants.sceneHeight size.width = screenSize.width * (size.height / screenSize.height); return GameScene(size: size) } override func viewDidLoad() { super.viewDidLoad() let scene = self.createScene() // Configure the view. let skView = self.view as SKView skView.showsFPS = false skView.showsNodeCount = false /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = true /* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFit skView.presentScene(scene) } 

    После визуализации сцены его содержимое копируется в представление представления. Если вид и сцена имеют одинаковый размер, содержимое можно напрямую скопировать в представление. Если они отличаются друг от друга, тогда сцена масштабируется, чтобы вписаться в представление. Свойство scaleMode определяет, как масштабируется содержимое.

    Почтовый ящик создается в представлении, поэтому его нет. При этом часто требуется настройка .aspectFit, если вы хотите использовать определенный размер сцены и универсальную систему координат. Если это ваш случай, вам следует помочь следующее.

    Вам нужно выяснить, сколько стандартного .aspectFit потребуется в дополнении для удаления бокса с вашего текущего устройства и добавления его в вашу сцену. Вы заканчиваете сцену, которая светлее немного больше или немного шире, чем ваши первоначальные размеры, но сцена имеет, по крайней мере, тот же размер, что и исходный размер сцены. Затем вы можете переместить anchorPoint в исходные (0, 0) координаты или (0,5, 0,5) в зависимости от того, какую систему координат вы хотите использовать для своей игры.

    Код для этого свернутый и может меняться со временем. Если вы хотите быстро исправить, я создал Framework именно для этой цели. Он маленький, но портативный 🙂

    https://github.com/Tokuriku/tokuriku-framework-stash

    Просто:

    1. Загрузите ZIP-файл для репозитория
    2. Откройте подпапку «SceneSizer»
    3. Перетащите SceneSizer.framework «lego block» в ваш проект
    4. Убедитесь, что Framework в Embedded, а не только Linked
    5. Импортируйте Framework где-нибудь в свой код import SceneSizer

    И вы закончили, теперь вы можете вызвать класс SceneSizer.calculateSceneSize(#initialSize: CGSize, desiredWidth: CGFloat, desiredHeight: CGFloat) -> CGSize с помощью: SceneSizer.calculateSceneSize(#initialSize: CGSize, desiredWidth: CGFloat, desiredHeight: CGFloat) -> CGSize

    Документация находится в папке для чистого и полного использования со стандартной сценой. Надеюсь это поможет!

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.