2015-06-09 57 views
1

我正面臨Sprite-Kit和Swift 1.2的一個奇怪問題。我有以下代碼。屏幕中間正確顯示fingerSpriteSprite-Kit:SKAction.move根本不工作

但是,當我應用moveTo操作時,沒有任何反應。我對Sprite-Kit和Swift很新,所以我可能會做一些完全愚蠢的事情,但請與我一起裸露。

我在做什麼錯?

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
tutorialStepReset() 

var bounceLabels = SKAction.sequence([ 
    SKAction.scaleTo(1.3, duration: 0.5), 
    SKAction.scaleTo(1.0, duration: 0.5) 
    ]) 

var fingerPoint = CGPoint(x: self.size.width/2, y: self.size.height/2) 
var fingerSprite = SKSpriteNode(imageNamed: "finger.png") 

switch tutorialGuideIndex { 
    case 0: self.runAction(SKAction.runBlock({ 
     self.labelScore.runAction(SKAction.repeatActionForever(bounceLabels)) 

    })) 
    case 1: self.runAction(SKAction.runBlock({ 
     self.labelUntilNextLevel.runAction(SKAction.repeatActionForever(bounceLabels)) 

    })) 
    case 2: self.runAction(SKAction.runBlock({ 
     self.labelCurrentLevel.runAction(SKAction.repeatActionForever(bounceLabels)) 

    })) 
    case 3: 


     fingerSprite.position = fingerPoint 
     fingerSprite.zPosition = labelZPosition 
     self.addChild(fingerSprite) 
    case 4: 
     //move finger & draw line 
     fingerPoint.x = fingerPoint.x+20 
     fingerPoint.y = fingerPoint.y+20 
     fingerSprite.runAction(SKAction.scaleTo(2.0, duration: 4.0)) 
     fingerSprite.runAction(SKAction.moveTo(fingerPoint, duration: 4.0)) 


    tutorialGuideIndex++ 

} 
+0

你在哪裏精靈添加到含節點,當你運行的操作?從您發佈的代碼中,精靈不會被添加到任何節點... – giorashc

+0

好點giorashc!我重構了這個例子。基本上我正在開始工作,方法。 – user594883

+0

發佈與fingerSprite相關的整個方法 – Wraithseeker

回答

2

每個觸摸創建new精靈只有在case 3你把它添加到節點運行的移動動作。

當到達case 4時,您只需在新的sprite實例上運行該操作,而不將其添加到該節點,因此它將永遠不會顯示。

使用移動動作加入精靈節點

case 3:  
     fingerSprite.position = fingerPoint 
     fingerSprite.zPosition = labelZPosition 
     self.addChild(fingerSprite) 

     fingerSprite.runAction(SKAction.moveTo(fingerPoint, duration: 4.0)) 

我也注意到你嘗試運行在同一個精靈兩個動作之後:

fingerSprite.runAction(SKAction.scaleTo(2.0, duration: 4.0)) 
    fingerSprite.runAction(SKAction.moveTo(fingerPoint, duration: 4.0)) 

以一個接一個地運行動作,你應該採用序列動作:

fingerSprite.runAction(SKAction.sequence([ 
    SKAction.scaleTo(2.0, duration: 4.0), 
    SKAction.moveTo(fingerPoint, duration: 4.0)])); 

如果你需要這些操作並行使用運行group行動,而不是sequence

+1

你的意思是'組'不''產卵'? – johnpatrickmorgan

+0

哎呀,對。它應該是組。 – giorashc

+0

畢竟是愚蠢的錯誤......謝謝! – user594883