在Swift中初始化类属性
所以我试图创建一个游乐场,作为一个“演示”,这意味着我有多个幻灯片,它是交互式的。我是斯威夫特的新手,所以我真的需要一些帮助 这是我的主要代码在Swift中初始化类属性,swift,class,swift3,in-class-initialization,Swift,Class,Swift3,In Class Initialization,所以我试图创建一个游乐场,作为一个“演示”,这意味着我有多个幻灯片,它是交互式的。我是斯威夫特的新手,所以我真的需要一些帮助 这是我的主要代码 import UIKit import SpriteKit import PlaygroundSupport let frame = CGRect(x: 0, y: 0, width: 640, height: 480) let view = SKView(frame: frame) view.showsDrawCount = true view.s
import UIKit
import SpriteKit
import PlaygroundSupport
let frame = CGRect(x: 0, y: 0, width: 640, height: 480)
let view = SKView(frame: frame)
view.showsDrawCount = true
view.showsNodeCount = true
view.showsFPS = true
let scene = MainScene(size: CGSize(width: 640, height: 480))
view.presentScene(scene) //error here, explained below
PlaygroundPage.current.liveView = view
这是我的主要场景。swift代码-
import UIKit
import SpriteKit
import PlaygroundSupport
public class Slide: SKView {
public var title: SKLabelNode!
public var info: UITextView!
public func setter() {
self.title = SKLabelNode(fontNamed: "Chalkduster")
self.title.verticalAlignmentMode = .center
self.title.color = SKColor.white
self.title.position = CGPoint(x: frame.midX, y: 440)
let framer = CGRect(x: 40, y: 60, width: 560, height: 360)
self.info = UITextView(frame: framer)
self.info.font = UIFont(name: "Chalkduster", size: 20)
self.info.textAlignment = .center
self.info.textColor = UIColor.white
self.info.backgroundColor = UIColor.black
}
}
public class MainScene: SKScene {
public var button1 = SKSpriteNode(imageNamed: "Next")
public var button2 = SKSpriteNode(imageNamed: "Previous")
public var scene1: Slide?
public override func didMove(to view: SKView) {
backgroundColor = SKColor.black
scene1?.setter()
setScene1()
}
public func setScene1() {
scene1?.title = SKLabelNode(fontNamed: "Chalkduster")
scene1?.title.text = "Title."
scene1?.title.position = CGPoint(x: frame.midX, y: frame.midY)
scene1?.info.text = "Text."
addChild(scene1?.title)
addButtons()
}
public func addButtons() {
self.button1.position = CGPoint(x: 600, y: 40)
self.button2.position = CGPoint(x: 40, y: 40)
addChild(self.button1)
addChild(self.button2)
}
}
基本上,我是通过改变前一张幻灯片的标题/信息的功能来设置多张幻灯片。然而,我认为最好为我的幻灯片定义一个SKView类,以便使用SKTransition
然而,在我当前的代码中,我遇到了执行中断错误。另外,当我更改内容时,错误会跟着我进入mainsecene.swift的预期声明或无类初始值设定项
实际上,我只想修改类幻灯片的声明,然后使用该类制作多张幻灯片。下面是一个没有SpriteKit的示例。你应该认真复习一些基本的SWIFT和UIKIT课程,以便在语言上获得良好的基础。
import UIKit
import PlaygroundSupport
public class Slide: UIView {
public var title: UILabel
public var info: UITextView
required public override init(frame:CGRect) {
self.title = UILabel()
self.title.font = UIFont(name: "Chalkduster", size: 20)
self.title.textColor = UIColor.white
self.title.backgroundColor = UIColor.red
self.title.center = CGPoint(x: frame.midX, y: 440)
self.info = UITextView()
self.info.font = UIFont(name: "Chalkduster", size: 20)
self.info.textAlignment = .center
self.info.textColor = UIColor.white
self.info.backgroundColor = UIColor.blue
super.init(frame: frame)
addSubview(title)
addSubview(info)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
public class MainScene: UIView {
public var scene1: Slide
required public override init(frame: CGRect) {
scene1 = Slide()
super.init(frame: frame)
scene1.title.text = "Title."
scene1.title.sizeToFit()
scene1.title.center = CGPoint(x: frame.midX, y: frame.midY - 20)
scene1.info.text = "Text."
scene1.info.sizeToFit()
scene1.info.center = CGPoint(x: frame.midX, y: frame.midY + scene1.title.frame.height + 20)
addSubview(scene1)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
let frame = CGRect(x: 0, y: 0, width: 640, height: 480)
let view = UIView(frame: frame)
let scene = MainScene(frame: frame)
view.addSubview(scene)
PlaygroundPage.current.liveView = view
您从未调用scene1=Slide,因此您从未创建Slidepublic var scene1:Slide的新实例?这还不够吗?我刚把这个密码丢到操场上了。设置类型为Slide的变量时,addChildtitle不起作用。请查看苹果文档-。您需要创建一个实例并将该变量设置为该实例。我也不认为您应该使用SpriteKit。首先开始使用UIKit和UIView。这是最基本的。