2

所以我使用带有图像的 spritenode 并且我没有设置它的位置。有趣的是,我在设置它的位置时遇到了问题,所以我没有设置它,默认情况下它被设置为页面中心(出于明显的原因),最终完美。所以现在在我的 touchesbegan 方法中,如果原始图像被按下,我希望更改所述图像,所以我正在检查触摸位置是否等于(图像的)节点的位置。然后,如果这是真的,我将其替换为名为“nowaves”的新图像。

    for touch in touches
    {
        let location = touch.location(in: self)
        if (location == audioPlaying.position)
        {
            audioPlaying = SKSpriteNode(imageNamed: "nowaves")
        }

        else
        {

大家觉得我有必要读吗?好吧,正如我要求的那样,我对其进行了测试,但没有结果。这是我尝试过的:

    audioPlaying.size = CGSize(width: frame.size.width / 13, height: frame.size.height / 20)
    addChild(audioPlaying)

如果有人知道问题是什么,我希望得到一些反馈,谢谢:D

4

2 回答 2

0

默认情况下,该position属性返回节点中心的坐标。换句话说,除非你触及精灵的确切中心,if (location == audioPlaying.position)否则永远不会是真的。但是,您应该知道,触摸节点的确切中心点实际上是不可能的。

所以我们使用另一种方法。我们只需要检查触摸的节点是否是您想要的节点。

let touchedNode = self.nodes(at: touch.location(in: self)).first
if touchedNode == audioPlaying {
    // I think setting the texture is more suitable here, instead of creating a new node.
    audioPlaying.texture = SKTexture(imageNamed: "nowaves")
}
于 2017-01-29T07:49:35.547 回答
0

为了添加到 @sweeper ,我将所有初始图像内容都放在了 scenedidLoad 方法中,而不是我创建了一个新方法,我已经将它用于另一个功能来启动游戏并在那里有初始图像,现在一切正常出色地。

于 2017-01-29T19:56:24.763 回答