【问题标题】:Do something for "x" amount of seconds and then do something else做“x”秒的事情,然后做其他事情
【发布时间】:2015-11-01 01:43:54
【问题描述】:

所以我想知道一些事情。我有 3 个功能:

func makeHeroRun(){
    let heroRunAction = SKAction.animateWithTextures([ heroRun2, heroRun3, heroRun4, heroRun3], timePerFrame: 0.2)
    let repeatedWalkAction = SKAction.repeatActionForever(heroRunAction)
    hero.runAction(repeatedWalkAction)
}
func makeHeroJump(){
    let heroJumpAction = SKAction.animateWithTextures([heroJump1, heroJump2, heroJump2], timePerFrame: 0.2)
    hero.runAction(heroJumpAction)
}
func makeHeroSlide(){
    let heroSlideAction = SKAction.animateWithTextures([heroSlide1, heroSlide2], timePerFrame: 0.1)
    hero.runAction(heroSlideAction)
}

还有我的touchesBegan:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        var touch = touches.first as! UITouch
        var point = touch.locationInView(self.view)

        if point.x < size.width / 2 // Detect Left Side Screen Press
        {
            makeHeroSlide()
        }
        else
        if point.x > size.width / 2 // Detect Right Side Screen Press
        {
            makeHeroJump()
        }
    }

“英雄”是在游戏中奔跑的玩家。

我想要的是当“makeHeroSlide”完成运行时,我想重复“makeHeroRun”,所以在英雄滑动后,它应该继续运行。而当英雄在跳跃时,它应该停止奔跑,当英雄落地时,它应该再次继续奔跑。我怎样才能做到这一点?我想要与 AppStore 中的“Line Runner”游戏中玩家跳跃和滚动的相同功能。

【问题讨论】:

  • 什么是heroRunAction

标签: xcode swift timer nstimer


【解决方案1】:

您的意思是“我希望 hero 通过 hero.runAction() 执行另一个操作。

只需使用重载函数func runAction(_ action: SKAction, completion block: () -&gt; Void)

https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKNode_Ref/index.html#//apple_ref/occ/instm/SKNode/runAction:completion:

例如

hero.runAction(heroSlideAction) { 
    /* completion block goes here. Takes no input, returns nothing. */
    hero.runAction(someOtherAction)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2020-01-15
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多