SpriteKit isUserInteractionEnabled = false阻止触摸

时间:2017-10-27 22:57:35

标签: sprite-kit xcode9 isuserinteractionenabled

我正在构建一个SpriteKit游戏。游戏场景是其上方透明层的父级,其作用是向玩家显示偶尔的消息。我希望这个层在大多数时间都是透明和惰性的,当然,永远不会接触到。因此,我将isUserInteractionEnabled设置为false。但是,当我稍后将其添加到场景中时,它会阻止它下面的所有触摸。是什么给了什么?

编辑:MessageLayer的父级是游戏场景,游戏场景也有isUserInteractionEnabled = false,所以我不相信MessageLayer继承了这种行为。

这是我的代码:

import Foundation
import SpriteKit

class MessageLayer: SKSpriteNode {

    init() {

        let size = CGSize(width: screenWidth, height: screenHeight)
        super.init(texture: nil, color: UIColor.blue, size: size)
        self.isUserInteractionEnabled = false

        self.name = "MessageLayer"
        alpha = 0.6
        zPosition = +200
    }

    override init(texture: SKTexture!, color: UIColor, size: CGSize)
    {
        super.init(texture: texture, color: color, size: size)
    }

    required init(coder aDecoder: NSCoder) {
        super.init(texture: nil, color: UIColor.clear, size: CGSize(width: 100, height: 100))
    }

    // MARK: - Functions

    func alphaUp() {
        alpha = 0.6
    }

    func alphaDown() {
        alpha = 0.0
    }

}

1 个答案:

答案 0 :(得分:0)

只需将触摸中继到您想要处理的场景/其他节点。

$SMA_APICall = "https://www.alphavantage.co/query?function=SMA&symbol=".$symbolValue."&interval=15min&time_period=10&series_type=close&apikey=R3MGTYHWHQ2LXMRS";
          $SMAresponse = file_get_contents($SMA_APICall);
          $jsonSMA = json_encode( $SMAresponse);

在这里你可以看到隐形节点正在正确发送事件:

enter image description here