スプライトキットを使用して最初のSwiftアプリケーションを作成しようとしています。 アプリは、ランダムに画面を移動する必要があるオブジェクトを5つまで作成する必要があります。速度は増加し、サイズは5秒ごとに減少します。 シーン設定が正しく、オブジェクトが表示され、移動しますが、しばらくしてからCPU使用率が100%になると、FPSが0になりアプリケーションがハングアップします。時にはそれは数秒間働くことがありますが、しばしばそれはしません。 理由は何ですか?スプライトキットアプリケーションがハングアップ
私はXcodeでうなずきます。シミュレーション中に現在どのブロックのコードが動作しているか確認できますか?
ここに更新機能があります。私はdidMoveToView
とtouchesBegan
部分を含んでいなかったため、問題に影響していないようです。
override func update(currentTime: CFTimeInterval) {
if (currentTime-oldTime)>1 {
if arrayofAims.isEmpty==false {
for currentAim in arrayofAims {
repeat {xvelocity=(Int(arc4random())%3 - 1) * aimSpeedX} while xvelocity == 0
repeat {yvelocity=(Int(arc4random())%3 - 1) * aimSpeedX} while yvelocity == 0
currentAim.physicsBody?.applyForce(CGVectorMake (CGFloat(xvelocity), CGFloat(yvelocity)))
}
}
oldTime=currentTime
timecount+=1
}
if timecount>5 {
if aimSpeedX < 5000 {
aimSpeedX+=200
}
if aimSizeRatioX > 0.3 {
aimSizeRatioX -= 0.05
aimSizeRatioY -= 0.05
}
timecount=0
if arrayofAims.count<6 { arrayofAims.append(createAnAim())
currentAim=arrayofAims[arrayofAims.count-1]
addChild(currentAim)
}
}
}
と相互作用しない[そう]へようこそ! [ask]セクションをお読みください。ところで、誰もまだ答えていないので、あなたは誰ですか? –
デバッグの最も基本的な方法として、コードの一部を削除して問題を切り分けてください。だから、 'addChild(currentAim)'行を削除して、問題がまだ起こっているかどうかを確認します。更新メソッドが原因であると完全に確信していますか?描画数( 'skView.showsDrawsCount')とノード数(' skView.showsNodesCount')を示すデバッグラベルを有効にします。アプリが立ち往生したときに何番に表示されますか? – Whirlwind
問題を再現できる最小限の例で質問を更新してください(またはgithubリポジトリをアップロードすることもできます)。 – Whirlwind