- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
标题是一个问题,与该问题相关的另一个问题是如何将我创建的类连接到 UILabel?谁能帮帮我吗。如果您想知道我在做什么,那就是在 SpriteKit 中制作文本冒险游戏。我不知道我是否应该在 spritekit 或单 View 应用程序中制作它。
这是我的代码:
import UIKit
import SpriteKit
class GameViewController: UIViewController {
@IBOutlet weak var locationName: UILabel! // Name of the Location of the game
@IBOutlet weak var userInputArrows: UILabel! // Arrows for user input
@IBOutlet weak var objectiveName: UILabel! // Name of the objective of the game
@IBOutlet weak var computerOutput: UILabel! // The AI's output or return text
@IBOutlet weak var userInputText: UITextField! // Humans input text
class Thing {
var location: String
var name: String
var computerDescription: String
init(location: String, name: String, computerDescription: String) {
self.location = location
self.name = name
self.computerDescription = computerDescription
let location = locationName.text
}
}
// Main Location is Abandoned Power Plant
// Start Location: Inside a dim lit room
let roomAbandonedPowerPlant = Thing(location: "Room", name: "ROOM", computerDescription: "A small dimly lit room " +
"with large heavy machinery. With almost complete silence.")
let machineryAbandonedPowerPlant = Thing(location: "Room", name: "MACHINERY", computerDescription: "Old corroded " +
"machines, looks like it hasn't been used in a long time.")
let paperAbandonedPowerPlant = Thing(location: "Room", name: "PAPER", computerDescription: "All crumbled up with " +
"dirt covering everything, and the lettering fading away.")
let writingAbandonedPowerPlant = Thing(location: "Room", name: "Paper WRITING", computerDescription: "The paper says: " +
"The only way out of this room is to use your imagination.")
let machineryLetteringPowerPlant = Thing(location: "Room", name: "MACHINE LETTERING", computerDescription: "It says:" +
"Built - 1890, Occupation - Used for spare oil, Made By - John Mac")
let firstKeychainPowerPlant = Thing(location: "Room", name: "KEYCHAIN", computerDescription: "Slightly shining in the dim" +
" sunlight.")
let keychainPowerPlant = Thing(location: "Room", name: "VIEW KEYCHAIN", computerDescription: "It say's: Owner: John Mac")
class Room: Thing {
}
let room = Room(location: "Room", name: "Room", computerDescription: "A small dimly lit room with large heavy " +
"machinery. With almost complete silence.")
class Machinery: Thing {
}
let machinery = Machinery(location: "Room", name: "Machinery", computerDescription: "Old corroded machines, looks " +
"like it hasn't been used in a long time.")
class Paper: Thing {
}
let paper = Paper(location: "Room", name: "Paper", computerDescription: "All crumbled up with dirt covering " +
"everything, and the lettering fading away.")
class PaperWriting: Thing {
}
let paperwriting = PaperWriting(location: "Room", name: "Paper Writing", computerDescription: "The Paper says: " +
"The only way out of this room is to use your imagination.")
class MachineLettering: Thing {
}
let machinelettering = MachineLettering(location: "Room", name: "Machine Lettering", computerDescription: "It says: " +
"Built - 1890, Occupation - Used fir spare oil, Made By - John Mac")
class Keychain: Thing {
}
let keychain = Keychain(location: "Room", name: "Keychain", computerDescription: "Slightly shining in the dim sunlight.")
class ViewKeychain: Thing {
}
let viewkeychain = ViewKeychain(location: "Room", name: "View Keychain", computerDescription: "It says: Owner: John " +
"Mac")
override func viewDidLoad() {
super.viewDidLoad()
}
最佳答案
您收到该错误是因为在 swift 中每个类都有自己的 namespace 并且 locationName
未在 Thing
中定义。您更大的问题是 encapsulation 之一.虽然可以有像这样的嵌套类,但这种情况并不常见。相反,类或对象应该是具有自己的属性和操作这些属性的方法的离散实体。
我会将 Thing
及其子类移到 GameViewController
之外。 (或者更好的是,将其移动到自己的文件中)。例如:
class Thing {
var location: String
var name: String
var computerDescription: String
init(location: String, name: String, computerDescription: String)
{
self.location = location
self.name = name
self.computerDescription = computerDescription
}
}
class Machinery: Thing {
}
class Paper: Thing {
}
class PaperWriting: Thing {
}
class MachineLettering: Thing {
}
class Keychain: Thing {
}
class ViewKeychain: Thing {
}
class Room: Thing {}
class GameViewController: UIViewController
{
@IBOutlet weak var locationName: UILabel! // Name of the Location of the game
@IBOutlet weak var userInputArrows: UILabel! // Arrows for user input
@IBOutlet weak var objectiveName: UILabel! // Name of the objective of the game
@IBOutlet weak var computerOutput: UILabel! // The AI's output or return text
@IBOutlet weak var userInputText: UITextField! // Humans input text
// Main Location is Abandoned Power Plant
// Start Location: Inside a dim lit room
let roomAbandonedPowerPlant = Thing(location: "Room", name: "ROOM", computerDescription: "A small dimly lit room " +
"with large heavy machinery. With almost complete silence.")
let machineryAbandonedPowerPlant = Thing(location: "Room", name: "MACHINERY", computerDescription: "Old corroded " +
"machines, looks like it hasn't been used in a long time.")
let paperAbandonedPowerPlant = Thing(location: "Room", name: "PAPER", computerDescription: "All crumbled up with " +
"dirt covering everything, and the lettering fading away.")
let writingAbandonedPowerPlant = Thing(location: "Room", name: "Paper WRITING", computerDescription: "The paper says: " +
"The only way out of this room is to use your imagination.")
let machineryLetteringPowerPlant = Thing(location: "Room", name: "MACHINE LETTERING", computerDescription: "It says:" +
"Built - 1890, Occupation - Used for spare oil, Made By - John Mac")
let firstKeychainPowerPlant = Thing(location: "Room", name: "KEYCHAIN", computerDescription: "Slightly shining in the dim" +
" sunlight.")
let keychainPowerPlant = Thing(location: "Room", name: "VIEW KEYCHAIN", computerDescription: "It say's: Owner: John Mac")
let room = Room(location: "Room", name: "Room", computerDescription: "A small dimly lit room with large heavy " +
"machinery. With almost complete silence.")
let machinery = Machinery(location: "Room", name: "Machinery", computerDescription: "Old corroded machines, looks " +
"like it hasn't been used in a long time.")
let paper = Paper(location: "Room", name: "Paper", computerDescription: "All crumbled up with dirt covering " +
"everything, and the lettering fading away.")
let paperwriting = PaperWriting(location: "Room", name: "Paper Writing", computerDescription: "The Paper says: " +
"The only way out of this room is to use your imagination.")
let machinelettering = MachineLettering(location: "Room", name: "Machine Lettering", computerDescription: "It says: " +
"Built - 1890, Occupation - Used fir spare oil, Made By - John Mac")
let keychain = Keychain(location: "Room", name: "Keychain", computerDescription: "Slightly shining in the dim sunlight.")
let viewkeychain = ViewKeychain(location: "Room", name: "View Keychain", computerDescription: "It says: Owner: John " +
"Mac")
var currentThing: Thing?
{
didSet
{
self.locationName.text = self.currentThing?.location
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.currentThing = self.paper
}
}
此外,还不清楚 Thing
的子类是否只是 stub ,以后会得到更多的实现,但如果它们只是简单地重命名 Thing
,你应该使用 typealias
typealias Room = Thing
而不是 class Room: Thing {}
。
我对您将类连接到 UILabel
的意思感到困惑。但是您可以实现一个属性观察器,它会在每次设置属性时更新标签,例如:
var currentThing: Thing?
{
didSet
{
self.locationName.text = self.currentThing?.location
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.currentThing = self.paper
}
在这里,属性 currentThing
被声明为可选的 Thing
。每次设置 currentThing
时,locationName
的文本都会设置 currentThing
的 location
。 currentThing
设置为 paper
,因此 locationName
应显示为“Room”。
到目前为止,您只使用了 UIKit,因此 SpriteKit 应用程序没有意义。基于单一 View 应用程序模板的应用程序会更有意义。
关于ios - 为什么我会收到 "Instance Member cannot be used on type GameViewController"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39212306/
我们有一个包含重复用户记录的数据库,我需要根据几个因素选择“最佳”用户: 应先选择具有成员(member)资格的用户,然后再选择没有成员(member)资格的用户 成员(member)有级别,在所有条
不知道为什么 Visual Studio 发出此警告: Access of shared member, constant member, enum member or nested type thr
我有一个数据库设置来注册网站的成员(member)专用区域的成员(member)。我可以使用复选框回显所有注册成员,以便我可以选择从管理页面删除单个成员,但我似乎无法弄清楚如何在单击提交按钮时选择删除
假定前缀一元运算符可以“由不带参数的非静态成员函数或带一个参数的非成员函数实现”(§13.5.1[over.unary]/1),除了适用于任何成员/非成员函数选择的通常封装/代码重用设计原理之外,还有
拥有 struct Person { string name; }; Person* p = ... 假设没有运算符被重载。 哪个更有效(如果有的话)? (*p).name 对比 p->name
进程文件: members-area or members-area.exe 进程名称: 5-1-61-96 进程类别:存在安全风险的进程 英文描述: 
引用资料 http://msdn.microsoft.com/en-us/library/6tc47t75%28v=VS.80%29.aspx http://msdn.microsoft.com/en
这个问题在这里已经有了答案: Is there any reason to use this-> (16 个答案) 关闭 7 年前。 这有什么区别: int MyClass::getId() {
我正在制作一个网站,您需要在其中注册,然后创建一个角色来玩。我如何将注册页面中使用的表格与玩家的表格结合起来,以便玩家始终获得他创建的角色。 我有一个表members,用于存储注册用户以及角色的 ta
我处于困境中,我被委托(delegate)创建一个 PHP Web 应用程序,该应用程序允许一个人注册,然后该用户可以再注册 5 个其他用户,他注册的其他用户也可以每个注册 5 个成员。 我希望创建数
我试图在成员(member)页面上显示一个非常简单的用户名。我已经在 stackoverflow 上搜索过,但使用我发现的内容不起作用。 我使用 HTML 表单指南中非常常见的注册/登录脚本,该脚本使
我正在使用CodeIgniter,我的问题是关于MySQL查询。我有两个表,分别是成员和关系。 成员表 我正在做的是,根据member_type将所有用户添加到成员表中。如果 member_type
我有一个表,用于存储 2 个成员(成员 A 和成员 B)之间的聊天信息。现在,当成员 A 删除他的消息时,我会抛出这样的 sql 请求 $deleting = mysqli_query($connec
from bs4 import BeautifulSoup import requests r = requests.get('http://medicalassociation.in/doctor-
我有两个我无法修改的类,它们都具有完全相同的成员: class Pose1 { public: double x,y; }; class Pose2 { public: d
我正在测试服务器上运行机器人。当前 channel 中有 3 个成员(member_count of 3),但它只返回一个成员。该成员是机器人。 代码: import discord from dis
我有一个对象,我们称之为 o,以及对 o 的引用。 在o范围内,我设置了一个成员,我们称之为m。 所以在 o 中,我调用: o.m = "blah" 在 o 之外,我访问 m: console.log
我正在尝试实现自定义成员(member)资格提供程序并希望更改 GetUser 方法。问题是 GetUser 返回 MembershipUser,而我想返回 MyMembershipUser,它有两个
我的网站有一个推荐给 friend 的按钮。为了鼓励人们使用此功能,我想用积分奖励那些使用它的人(积分将兑换奖品......还不知道)。 好的,所以我有这样的结构: 表单.php 您可以在此处输入 f
我在 MySQL 中有三个表, 组(键:group_id) 成员(键:member_id) group_member_relations 键:group_id, member_id 最后一个表包含 m
我是一名优秀的程序员,十分优秀!