2016-04-08 14 views
1

私はSwift言語には新しく、古いスイフト言語を使用しているチュートリアルに従っています。このチュートリアルでは、pngファイルでアニメーションを作成する方法について説明します。そのため合計6個のPNGファイルがあり、合計でアニメーションが作成されます。これはチュートリアル "https://www.youtube.com/watch?v=5aCVyrJbrHQ"のリンクです。 Swiftの古いバージョンと新しいバージョンの重要な違いに気付きました。ここで私は立ち往生します。Swift 2.2でアニメーションが動作しない

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    let shooterNode = self.childNodeWithName("shooterNode") 

    if(shooterNode != nil) { 
     let animation = SKAction.animateWithTextures(shooterAnimation, timePerFrame: 0.1) 
     shooterNode?.runAction(animation) 
    } 

新バージョン:touchesBegan FUNCオーバーライド(タッチ:セット、withEventイベント:たUIEvent

旧バージョン:?touchesBegan FUNCオーバーライド(タッチ:NSSet、withEventイベント:たUIEvent

エラー

私はシミュレータを実行し、オブジェクトをクリックするとすぐ応答は得られません。エラーはありません。オブジェクト名でタイプミスをしたが、何も見つからなかったかどうかを確認しました。

これは、あなたがそれのために

import UIKit 
import SpriteKit 

class ShooterScene: SKScene { 

    var score = 0 
    var enemyCount = 10 
    var shooterAnimation = [SKTexture]() 

    override func didMoveToView(view: SKView) { 
     self.initShooterScene() 
    } 

    func initShooterScene(){ 
     let shooterAtlas = SKTextureAtlas(named: "shooter") 

     for index in 1...shooterAtlas.textureNames.count { 
      let imgName = String(format: "shooter%01d", index) 
      shooterAnimation += [shooterAtlas.textureNamed(imgName)] 

     } 
    } 
     //Anime the shooter 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     let shooterNode = self.childNodeWithName("shooterNode") 

     if(shooterNode != nil) { 
      let animation = SKAction.animateWithTextures(shooterAnimation, timePerFrame: 0.1) 
      shooterNode?.runAction(animation) 
     } 
    } 
} 

を頼む場合は、ファイル全体の完全なコードですGameSwift.scene

import SpriteKit 

class GameScene: SKScene { 
    override func didMoveToView(view: SKView) { 


    } 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     let introLabel = childNodeWithName("introLabel") 

     if(introLabel != nil) { 
      let fadeOut = SKAction.fadeOutWithDuration(1.5) 

      introLabel?.runAction(fadeOut, completion: { 
       let doors = SKTransition.doorwayWithDuration(1.5) 
       let shooterScene = SKScene(fileNamed: "ShooterScene") 
       self.view?.presentScene(shooterScene!, transition: doors) 

      }) 

     } 
    } 

    /* Called before each frame is rendered */ 
    override func update(currentTime: CFTimeInterval) { 
      } 
} 
+0

すべてのメソッドが実行されたかどうかを確認しましたか?各メソッドにいくつかのprintステートメントを入れて、すべてが正しく呼び出されているかどうかを調べます。それはスタートになるだろう。また、 'if(shooterNode!= nil){...}'ブロック内にprintステートメントを置いてください。 – Whirlwind

+0

@Whirlwind応答のおかげで、ファイル内のすべての機能に印刷を追加し、コンソールに何も表示されませんでした。だから私はShooterScene.sksとShooterScene.swiftファイルの間に何か関係があると結論づけました。 –

+0

あなたは 'ShooterScene'をどこに提示しますか?新しいシーン(とその遷移)の実際の作成は、 '' let nextScene = ShooterScene(fileNamed: "ShooterScene"){/ *ここにオプションの遷移を使ってシーンを表示する* /} 'だから、その部分をチェックしてください。 – Whirlwind

答えて

2

それは次のようになります。

let shooterScene = ShooterScene(fileNamed: "ShooterScene") 

ではなく、 :

let shooterScene = SKScene(fileNamed: "ShooterScene") 
+0

ありがとうございます!コメントの誰かが、そのコード行について非常に誤解を招いていました:(しかし、ありがとう! –

+1

@CecilBoye問題はありません:)実際にはよくあるエラーです。 – Whirlwind

関連する問題