swift - 访问在特定方法内声明的 SKSpriteNode

标签 swift timer skspritenode

在我的 GameScene 类中,我有一个名为 shotLaser 的方法,它创建一个名为 Laser 的 SKSpriteNode,并将其添加为 self 的子级。每隔几秒在计时器上调用此方法

func shootLaser(){
    var Laser = SKSpriteNode(imageNamed: "LaserDot.png")
    Laser.position = CGPointMake(100, 100)
    Laser.physicsBody = SKPhysicsBody(circleOfRadius: 20)
    Laser.physicsBody?.categoryBitMask = PhysicsCatagory.Laser
    Laser.physicsBody?.contactTestBitMask = PhysicsCatagory.Blade
    Laser.physicsBody?.affectedByGravity = false
    Laser.physicsBody?.dynamic = false
    Laser.physicsBody?.density = 0.5   
    self.addChild(Laser)
}

在每次渲染一帧时自动调用的 update() 方法中,我尝试访问激光对象的位置,但当我尝试访问时出现错误“使用未解析的标识符‘激光’”将 LaserLoc 设置为 Laser.position

override func update(currentTime: CFTimeInterval)
{
    /* Called before each frame is rendered */

    // moves every value up an index each frame
    let laserLoc = Laser.position
    if (laserPoints[0] != nil){
        for var index = 9; index >= 1; index--
        {
            laserPoints[index] = laserPoints[index - 1]
        }
        laserPoints[0] = CGPointZero
    }

我在访问在外部任何方法中声明的 SKSpriteNodes 属性时似乎没有任何问题。有没有解决的办法?提前致谢!

编辑:

我知道“Laser”在shootLaser()方法中纯粹是本地的,但同样,有没有办法在更新方法中访问它的属性?

最佳答案

尝试将 Laser 放在类声明之后,而不是放在函数中。像这样:

class YourClassName: SKScene {

    var Laser = SKSpriteNode(imageNamed: "LaserDot.png")

此外,请确保删除函数内的 Laser 声明,并将函数编辑为如下所示。

func shootLaser(){
    var Laser = SKSpriteNode(imageNamed: "LaserDot.png")
    Laser.position = CGPointMake(100, 100)
    Laser.physicsBody = SKPhysicsBody(circleOfRadius: 20)
    Laser.physicsBody?.categoryBitMask = PhysicsCatagory.Laser
    Laser.physicsBody?.contactTestBitMask = PhysicsCatagory.Blade
    Laser.physicsBody?.affectedByGravity = false
    Laser.physicsBody?.dynamic = false
    Laser.physicsBody?.density = 0.5
    self.Laser.removeFromParent()   
    self.addChild(Laser)
}

关于swift - 访问在特定方法内声明的 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640779/

相关文章:

sprite-kit - Sprite Kit 在屏幕外从父级中删除 SKNode

ios - 在 Swift 上计算我的位置和 MapKit 引脚之间的距离

Swift indexOf,==运算符覆盖未被调用

ios - 通过委托(delegate)将数据传递给各种 View Controller

java - 安卓服务停止

javascript - 点击后退按钮后停止 Angular $timeout 计时器

python - 用空格键中断计时器

arrays - 从数组 spritekit swift 中删除节点

ios - 无法更改不同状态的 UIbutton 图像

arrays - 从 SKSpriteNode 类实例访问 GameScene 中的数组?