В течение последних нескольких часов я отчаянно пытался манипулировать этим фрагментом кода в Swift, чтобы показать фоновое изображение на своей игровой площадке.
Важно: я не владею этим кодом(источник: https://github.com/ralfebert/uikit-playground)
//: A UIKit based Playground for presenting user interface
import UIKit
import SpriteKit
import PlaygroundSupport
class CircleScene : SKScene {
let circle = SKShapeNode(circleOfRadius: 20)
override init() {
super.init(size: CGSize.zero)
self.backgroundColor = .clear
self.scaleMode = .resizeFill
self.circle.fillColor = .red
self.circle.strokeColor = .clear
self.addChild(circle)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func didMove(to view: SKView) {
let background = SKSpriteNode(imageNamed: "Playground.jpg")
background.position = CGPoint(x: 0, y: 0)
background.size.width = self.size.width
background.size.height = self.size.height
background.anchorPoint = CGPoint(x: 0.5,y: 0.5)
self.addChild(background)
}
override func didChangeSize(_ oldSize: CGSize) {
circle.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if let location = touches.first?.location(in: self) {
nodeTapped(node: self.atPoint(location))
}
}
func nodeTapped(node : SKNode) {
if node === circle {
circle.run(SKAction.sequence([
SKAction.scale(by: 1.5, duration: 0.1),
SKAction.scale(by: 1/1.4, duration: 0.2)
]))
}
}
}
class ViewController : UIViewController {
override func loadView() {
let view = SKView()
view.presentScene(CircleScene())
let label = UILabel()
label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
label.text = "Hello World!"
label.textColor = .black
view.addSubview(label)
self.view = view
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = ViewController()
Предложение didMove
было взято из другого вопроса StackOverflow. Как вы можете видеть, этот код создает представление с базовым фоном. Благодаря свойству allowsTrasparency
я былсмог сделать фон прозрачным, надеясь, что это решит проблему. Я также прояснил фон, но это не сработало.
В результате всегда черный экран (с красным шариком в центре, который немое изображение но SKNode istance). Что я пробовал:
- Установить
allowsTransparency
на true
- Установить
backgroundColor
на .clear
- Перемещение фонового кода в
init
функцию
Хочу отметить, что у меня 0 знаний о Swift API, и я пытался понять это благодаря документации и простому коду, который я нашел в Интернете.
Заранее спасибо.