首页 > 解决方案 > @objc func addAlien 有什么问题?

问题描述

我在行中遇到 2 个错误@objc func addAlien()(@objc 只能与类成员一起使用)和gameTimer = Timer.scheduledTimer(timeInterval: 0.75, target: self, selector: #selector(addAlien), userInfo: nil, repeats: true)(在声明之前使用局部变量“addAlian”)

对不起,我是 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
}
}

标签: swift

解决方案


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


推荐阅读