@objc func addAlien有什么问题?

时间:2019-02-23 16:25:12

标签: swift

@objc func addAlien()行(@objc仅可用于类的成员)和gameTimer = Timer.scheduledTimer(timeInterval: 0.75, target: self, selector: #selector(addAlien), userInfo: nil, repeats: true)行中(在声明之前使用局部变量'addAlian')出现2个错误

对不起,我是Swift开发的新手,有什么想法可以解决吗?

谢谢。

import SpriteKit
import GameplayKit

class GameScene: SKScene, SKPhysicsContactDelegate {

var starfield: SKEmitterNode!
var player: SKSpriteNode!
var scoreLabel: SKLabelNode!
var score: Int = 0{
didSet {
scoreLabel.text = "Счет \(score)"
}
}

var gameTimer: Timer!
var aliens = ["alien" , "alien2" , "alien3 "]

override func didMove(to view: SKView) {
starfield = SKEmitterNode (fileNamed: "Starfield") // Connect animation to starfield
starfield.position = CGPoint(x: 0, y: 1472) // Position starfield on screen
starfield.advanceSimulationTime(10) 
self.addChild(starfield) // Add starfield on screen

starfield.zPosition = -1 


player = SKSpriteNode(imageNamed: "damir2") // Подключаем картинку игрока
player.position = CGPoint (x: 0, y: -300) // Позиция игрока


self.addChild(player) // add player



self.physicsWorld.gravity = CGVector(dx: 0, dy: 0) // Delete gravitation from the game
self.physicsWorld.contactDelegate = self 


scoreLabel = SKLabelNode(text: "Score: 0") // Score table
scoreLabel.fontName = "AmericanTypewriter-Bold" // Шрифт для таблички
scoreLabel.fontSize = 56 
scoreLabel.fontColor = UIColor.white 
scoreLabel.position = CGPoint(x: -200, y: 500) 
score = 0 

self.addChild(scoreLabel) 


gameTimer = Timer.scheduledTimer(timeInterval: 0.75, target: self, selector: #selector(addAlien), userInfo: nil, repeats: true)

@objc func addAlien(){   
aliens = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: aliens) as! [String]

let alien = SKSpriteNode(imageNamed: aliens[0])
let randomPos = GKRandomDistribution(lowestValue: 20, highestValue: 350)
let pos = CGFloat(randomPos.nextInt())
alien.position = CGPoint(x: pos, y: -800)



}

}


override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
}

1 个答案:

答案 0 :(得分:2)

根据您共享的代码-您在addAlien函数内部声明了didMove。您需要将addAliendidMove函数中移出,并将其与didMove放在同一级别-在类范围内。