1

coveyner ベルトを上から下に連続的に移動する必要があるゲームを作成しています。アプリがバックグラウンドになり、後で再開されると問題が発生します。

オブジェクトが現在の位置から削除され、アニメーションが停止します。

4

2 に答える 2

0

コメントが説明しているように、少なくとも率直な方法では、基本的にそれを行うことはできません。次の問題にどのようにアプローチするかをお見せしましょう。

主な問題は、オブジェクトがアニメーション化されているときに、オブジェクトの実際の位置が実際には変化しないことです。代わりに、プレゼンテーション レイヤーが変更されます。では、オブジェクトがどこにあるかを正確に知るにはどうすればよいでしょうか? 理論的には、アニメーション化する実際のフレーム、アンカーポイント、またはその他のプロパティをレイヤー プレゼンテーション レイヤーに要求することで、これを行うことができます。

 [[myView.layer presentationLayer] frame];

したがって、アプリケーションがバックグラウンドになったときに、すべてのビューを更新してプレゼンテーション レイヤーを反映するように設定します。あなたが戻ってきたら、そこからアニメーションを再開します。オブジェクトは適切な場所にある必要があります。

 NSAarray *viewsBeingAnimated;

- (void)applicationWillEnterForeground:(UIApplication *)application{
 for (UIView *oneView in viewBeingAnimated){
    // Update whatever other properties that you were animating
    [oneView setFrame:[[myView.layer presentationLayer] frame]];

    [oneView layer] removeAllAnimations];
  } 
}

アプリが再開したら、そこから続行できるはずです。

それが役立つことを願っています。

于 2013-04-25T07:50:52.903 に答える