【问题标题】:the code that works in Xcode 6 doesn't work with Xcode 7适用于 Xcode 6 的代码不适用于 Xcode 7
【发布时间】:2015-07-27 00:04:54
【问题描述】:

这是我在这里的第一个问题,对于英语不好表示歉意。

我最近使用 Xcode 6.4 制作了一个游戏应用程序,它在 IOS 设备上运行良好。但是,当我上传 Xcode 7 Beta 4 以开发适用于 IOS 9 的应用时,出现了问题。

我在 Xcode 6 中使用了这段代码,这限制了我的英雄在 X 轴的 -1.0 和 1.0 之间翻转,我的英雄无法翻转到 -2.0:

func flip() {
        isUpsideDown = !isUpsideDown

        var scale: CGFloat!
        if isUpsideDown {
            scale = -1.0
        } else {
            scale = 1.0
        }
        let translate = SKAction.moveByX(0, y: scale*(size.height + kMLGroundHeight), duration: 0.1)
        let flip = SKAction.scaleYTo(scale, duration: 0.1)

        runAction(translate)
        runAction(flip)
    }

但现在在 Xcode 7 中,这个 cod 似乎不起作用。一开始看起来还不错,但随后英雄开始翻转到 -2.0、-3.0,这种情况一直持续到英雄出帧。

这也是我在 Xcode 6 上完美运行的游戏场景代码:

  override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

        if isGameOver {

            restart()

        } else if !isStarted {

            start()

        } else {

            hero.flip()

        }

    }

我是这方面的新手,如果你能回答我的问题,我将不胜感激。

【问题讨论】:

  • size.height 和 kMLGroundHeight 的值是多少?如果它们的总和大于 1,则英雄将在 y 方向上移动得比您预期的 (-1, 1) 范围更远。

标签: swift xcode6 sprite-kit xcode7


【解决方案1】:

如何在翻转函数中放置一个断点,然后单步执行要更改的位置并查看跟踪...

或者一种集中的断点策略是在值设置为超出范围时将didSet 添加到您的scale 属性中。然后查看跟踪以了解为什么会出错。

scale 修改为如下所示。

var scale:CGFloat!{
    didSet{
        if scale < -1.0 || scale > 1.0{
            print("scale is out of bounds : \(scale)")
            print("stop here")//<< put breakpoint on this line
        }
    }
}

如果您在使用断点方面需要帮助,请查看this

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2014-01-25
    相关资源
    最近更新 更多