0

質問しました(アニメーションが時々発生しない) しばらく前に、どうやら時々起こっていないアニメーションについて. 役立つ回答はありませんでした。そのため、多くの調査と試行錯誤の末、2 番目に発生するはずのアニメーションが最初に発生する場合があることを発見しました。もう 1 つは実際に発生しますが、それが発生すると予想されるときに発生するわけではありません。2つのアニメーションは「フリップ」と「消える」です。例として、4 つのタイルがあります。1 つのタイルに触れると反転します。2 番目のタイルに触れると、反転するはずです。タイルが一致する場合、両方のタイルが消えます。それらが一致しない場合、タイルは裏返します。私が知る限り、フリップバック アニメーションは常に正しく行われています。つまり、最初のタイルが裏返されます。2 番目のタイルが裏返されます。タイルが一致しません。2 つのタイルが反転します。牌が合ったときは、最初のタイルが正しく反転します。2 番目のタイルが正しく反転し、両方が消えることがあります (回転と縮小のアニメーション グループ)。2 番目のタイルが正しく反転しないことがありますが、2 番目のタイルが反転する前に両方とも消えます。これは受け入れられません。

これは私がこれまでに試したことです-NSThreadの一時停止を試みました。スレッド全体が一時停止されたため、それは機能しませんでした。これにより、発生していないアニメーションが発生しませんでした。私は NSTimer を調べましたが、呼び出されているメソッドには 2 つのパラメーターがあります。つまり、NSInvocation を実行する必要があり、まだそれを理解していません。現在、フリップ アニメーションが完了したことを示すフラグを設定しました。この方法が最終的に機能する場合、完了カウントを増やさずに個々のタイルを何度も何度も反転させる方法を考え出す必要があります。とにかく、この方法を使用して、実行する前に最初のアニメーションが完了するまで待機するように 2 番目のアニメーションに指示する方法を理解する必要があります。

私が理想的にできるようにしたいのは、コミットする前に 2 番目のタイルが完全に反転するまで常に待機するように、消えるアニメーションに指示することです。

私が理解できないのは、a)アニメーションが正しい順序で発生する場合とそうでない場合がある理由、およびb)アニメーションが正しい順序で発生しないようにしようとしている場合、それらを正しい順序で強制的に発生させる方法です注文。

どのコードが役立つかはよくわかりません。頼めば提供します!

アニメーションを呼び出すコードは次のとおりです。

-(void)buttonPressed: (UIButton*)buttoni 
{
    [self flipTiles:(UIButton *)buttoni];
    [self twoTilesFlipped];
}

明らかに、flipTiles アニメーションが最初に呼び出されます。私が理解していないのは、twoTilesFlipped で呼び出されるコードの後まで呼び出されないことがある理由です。プログラミングはロジックに関するものだと思っていましたが、これは私には論理的に意味がありません。ああ、私はちょうど考えていた...私はこのコードに NSTimer の遅延を入れるつもりです - 多分それはうまくいくでしょう!

4

1 に答える 1

0

それはトリックを行ったようです。明らかに今すぐ修正する必要がある微調整がいくつかありますが、少なくとも常に機能します。

これは私が追加したものです:

[NSTimer scheduledTimerWithTimeInterval:2.0
                                     target:self
                                   selector:@selector(twoTilesFlipped)
                                   userInfo:nil
                                    repeats:NO];

したがって、メソッドの最終的なコードは次のとおりです。

-(void)buttonPressed: (UIButton*)buttoni 
{
    [self flipTiles:(UIButton *)buttoni];
    [NSTimer scheduledTimerWithTimeInterval:2.0
                                     target:self
                                   selector:@selector(twoTilesFlipped)
                                   userInfo:nil
                                    repeats:NO];
}
于 2012-05-18T15:43:05.173 に答える