0

Origin プロパティを設定して UIView を移動する画面上でボールが跳ねるアニメーションを作成していましたが、ボールの動きがスムーズではないことがわかりました。drawInRect が呼び出されている頻度を確認したところ、30 回/秒であり、速いボールの動きをスムーズにするのに十分とは考えていません。

私の質問は、システムに 60fps で画面を更新/再描画するように依頼することは可能ですか? OpenGLで同じことができますか?

4

2 に答える 2

0

表示リンク機能を設定することを検討してください。これにより、システムを通過するすべての描画呼び出し (または特定のフレーム数ごと) に対してメソッドを起動できます。扱いたいクラスは CADisplayLink で、ここにチュートリアルがあります。この静止画でアニメーションが十分に速くない場合、アニメーションは決して滑らかに見えません;)。

于 2012-05-16T13:36:17.010 に答える
-1

アニメーションを正しくするために iOS の fps を変更する必要はありません。単にコードで変更する必要があります。NSTimer (例) を使用して変更できます。

一部のアニメーションでタイマーを初期化します:-

    float theInterval = 1.0/30.0;//Here you can set the frame rate , now set on 30
    [NSTimer scheduledTimerWithTimeInterval:theInterval target:self
        selector:@selector(animateView:) userInfo:nil repeats:YES];

    - (void)animateView:(NSTimer *)theTimer 
    {
    //    your animation block here....
    Something like..
    view.center = CGPointMake(view.center.x+viewMovement.x,
                    view.center.y+viewMovement.y);

        BOOL collision = view.center.y >= view2.center.y - 16 &&
        view.center.y <= view2.center.y + 16 &&
        view.center.x > view2.center.x - 32 &&
        view.center.x < view2.center.x + 32;

    if(collision)
        viewMovement.y = -viewMovement.y

}

これは単なる例です。それに応じてロジックを実装してください。

于 2012-05-16T12:37:59.387 に答える