xCode ベータ 6 に更新したところです。ベータ 5 ではすべてが機能しますが、ベータ 6 では何かを変更する必要があります。「!」をたくさんつけます。私のコードで。とにかく、私のプロジェクトは小さなゲームです。そして、レベル(勝ったか負けたか)を完了した後、sksceneを呼び出したいです。
コードはmainviewControllerのどこにあります:
if(flag==true){// IF we WON
/* That below lines should call "Won.swift" file But it doesn't */
var scene = Won(fileNamed: "GameScene")
let skView = self.view as SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = SKSceneScaleMode.AspectFill
scene.position = CGPointMake(0, 568)
skView.presentScene(scene)
}
Won.swift ファイルは次のとおりです。
class Won: SKScene {
var audioPlayer = AVAudioPlayer()
override func didMoveToView(view: SKView) {
/* Setup your scene here */
var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Fireworks", ofType: "mp3")!)
// Removed deprecated use of AVAudioSessionDelegate protocol
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
var error:NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound2, error: &error)
audioPlayer.prepareToPlay()
audioPlayer.play()
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "You Win";
myLabel.fontSize = 65;
myLabel.fontColor = UIColor.redColor()
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
self.addChild(myLabel)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
このコードはベータ 5 では機能しますが、ベータ 6 では機能しません。さらに、uikit、avfoundation、spritekit ファンデーションをプロジェクトに再追加します。また、メディア ファイル「mp3」または画像がバンドル リソースに存在することも確認します。プロジェクトはエラーや警告なしで完全に実行されます。ただし、Skscene セクションは機能しません。また、ブレークポイントを配置して、それがどのように行われるかを追跡しようとしました。プロセスはこれらの行で実行されますが、「Won.swift」ファイルには実行されません。
なにか提案を?ありがとうございました。