私は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) {
}
}
すべてのメソッドが実行されたかどうかを確認しましたか?各メソッドにいくつかのprintステートメントを入れて、すべてが正しく呼び出されているかどうかを調べます。それはスタートになるだろう。また、 'if(shooterNode!= nil){...}'ブロック内にprintステートメントを置いてください。 – Whirlwind
@Whirlwind応答のおかげで、ファイル内のすべての機能に印刷を追加し、コンソールに何も表示されませんでした。だから私はShooterScene.sksとShooterScene.swiftファイルの間に何か関係があると結論づけました。 –
あなたは 'ShooterScene'をどこに提示しますか?新しいシーン(とその遷移)の実際の作成は、 '' let nextScene = ShooterScene(fileNamed: "ShooterScene"){/ *ここにオプションの遷移を使ってシーンを表示する* /} 'だから、その部分をチェックしてください。 – Whirlwind