У меня есть мой основной файл GameScene.swift и файл facebookLogin.swift.Вызов функции класса
Я создаю SKSpriteNode 'FBButton' из класса из файла facebookLogin.Swift и добавляю его в GameScene через self.addChild (FBButton). Класс имел две функции touchBegan() и facebookSignIn().
Когда пользователь прикасается к спрайту «FBButton», touchBegan() подтверждает касание кнопки и вызывает facebookSignIn(). Затем эта функция подключается к пользователям Facebook. Здесь все хорошо.
Я хочу, чтобы эта функция вызывала функцию ShowButtons() в GameScene.swift. Я вызываю GameScene(). ShowButtons(), который удаляет FBLogin SpriteNode и добавляет еще 2 SpriteNodes и загружает данные пользователей Facebook в NSDictionary.
Данные получены от пользователей Facebook, однако кнопки не генерируют FBButton не удаляется из родителя.
Пожалуйста, помогите мне в том, где я ошибаюсь.
class facebookLogin: SKNode {
var signedIn = false
override init() {
fbButton = SKSpriteNode(imageNamed: "login_with_facebook")
fbButton.xScale = 1.0
fbButton.yScale = 1.0
super.init()
addChild(fbButton)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject() as UITouch
let point = touch.locationInNode(self)
if fbButton.containsPoint(point) {
facebookSignin()
}
}
func facebookSignin() {
var permissions = ["user_about_me",
"user_birthday"];
PFFacebookUtils.logInWithPermissions(permissions, {
(user: PFUser!, error: NSError!) -> Void in
if user == nil {
NSLog("Uh oh. The user cancelled the Facebook login.")
self.signedIn = false
} else if user.isNew {
NSLog("User signed up and logged in through Facebook!")
self.signedIn = true
} else {
NSLog("User logged in through Facebook!")
self.signedIn = true
GameScene().ShowButtons()
}
})
}
}
Ниже показаны кнопки скрипт
class GameScene: SKScene {
let fbButton = facebookLogin()
var btnHostGame: SKSpriteNode = SKSpriteNode(imageNamed: "HostGame")
var btnJoinGame: SKSpriteNode = SKSpriteNode(imageNamed: "JoinGame")
override func didMoveToView(view: SKView) {
userInteractionEnabled=true
self.backgroundColor = SKColor.whiteColor()
self.fbButton.userInteractionEnabled = true
self.fbButton.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 0.5)
addChild(self.fbButton)
}
func showButtons() {
self.btnHostGame.name = "btnHostGame"
self.btnHostGame.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 0.6)
addChild(self.btnHostGame)
self.btnJoinGame.name = "btnJoinGame"
self.btnJoinGame.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 0.40)
addChild(self.btnJoinGame)
fbButton.RemoveFromParent()
}
}
Все работает отлично, за исключением, когда он перезванивает GameScene. Кнопки не отображаются, и FBButton не удаляется.
Кто-нибудь знает решение?
Приветствия Ryann
в 'GameScene(). ShowButtons()' вы создаете новый экземпляр 'GameScene', не имеет доступ к существующему экземпляру , – zaph