2016-04-08 4 views
1

Swift2でSpriteKitを使用してIOSチェスアプリを開発しています。コンピュータプレーヤーと対戦している間、人間の動きはコンピュータの思考が終わるまで表示されません。コンピュータの思考が終わると、(人間の動きとコンピュータの動き)両方の動きが一緒に表示されます。チェス - iOS - SpriteKit - コンピュータの思考が終わるまで人間の動きは表示されません

予想される機能:人間が自分の移動をプレイすると、その移動が画面に表示される必要があります。人間の動きを表示して初めて、コンピュータの思考が始まらなければなりません。

私は当初、コンピューターの思考ロジックを呼び出していましたtouchesBeganの機能を呼び出しました。期待どおりに動作しませんでした。その後私はtouchesEndedの機能に呼び出しを移動しました。問題は残っていた。今私はの更新の機能の中にコールを入れました。まだ問題は残っています。

この問題の回答が見つかりませんでした。これに対処する場所はありませんか?

おかげで、 ArtBajji

+0

SpriteKitは、時間関連のアクションの2つの許可された方法を提供します。 SKActionおよびupdate:パラメータにcurrentTimeが渡されたメソッド。また、Swiftで補完ハンドラを簡単に実装することもできます。このすべてを使用すると、Player移動アニメーションが完了した後、コンピュータ移動を簡単に実行できます。 SKactionシーケンスと補完ハンドラの使い方をSOで検索してください。 – Whirlwind

+0

ありがとうございます。あなたが提案したように、SKActionを使用して、カスタムキューイングの実装とアクション完了ハンドラ私はこの要件を私のアプリで解決しました。 – ArtBajji

答えて

0

問題は、「コンピュータ」はすぐに人間の移動後、あなたはtouchesEndedに実装さdispatch_afterブロックを使用することに反応するということであれば。

let delay = 0  //time in seconds 
dispatch_after(delay, dispatch_get_main_queue()) { 
    //computer starts thinking 
} 
+0

答えをありがとう。残念ながら、これは逆の方法です。コンピュータ思考には30秒以上かかる。だからコンピュータ思考が終わるまで、コンピュータ思考の前に行われた人間の動きは画面に表示されません。要件は、人間の動きを表示し、コンピュータの思考を開始することです。 – ArtBajji

関連する問題