問題タブ [cadisplaylink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1241 参照

ios - 10 ミリ秒の drawRect で 60 fps を取得できますか?

ここCADisplayLinkでどのようにdrawRect動作するかについてより一般的な質問をしましたが、その質問にはまだ答えがないので、より具体的な質問をすることにしました。実行に約10msかかるメソッド?drawRect

私のアプリでは、次のCADisplayLinkように構成します。

updateメソッドは、カスタム UIView を呼び出すだけです(setNeedsDisplayスキップされたフレームをチェックするだけでなく):

drawRectこれは、4 ミリ秒または 5 ミリ秒以上かかるとすぐにフレームをスキップし始めます。私の目的では、最大で 10 ~ 11ms 程度必要ですが、1/60fps = 16.7ms で問題ないと考えました。

誰かがこれを達成しましたか?私は何を間違っていますか?

0 投票する
1 に答える
361 参照

objective-c - この NSTimer を CADisplayLink に置き換えるにはどうすればよいですか?

現在のプロジェクトの性質には CADisplayLink の方が適していることはわかっていますが、CADisplayLink を実装して NSTimer を置き換える方法がよくわかりません。

以下は私のNSTimerのコードです

同じ機能をより効率的に実行する CADisplayLink を作成するにはどうすればよいですか?

0 投票する
1 に答える
155 参照

variables - CADisplayLink の使用中に変数が更新されない

変数を更新するときに変数を変更できません。ボタンをタッチするとメソッド「reCenterYaw」が起動し、変数「self.hasYawCenterPointBeenSet」がメソッド内で更新されますが、「updateCycle」メソッドが戻ってきたときに変数が更新されたことを示していません。updateCycle は私の CADisplaylink 主導のメソッドです。変数をアトミックに更新して、「_」と「self」を使用してインスタンス変数として参照しました。何が起こっているのかわからない。

0 投票する
1 に答える
659 参照

ios - CADisplayLink を for in ループに実装する方法

そのため、for in ループを使用して一連のドット オブジェクトを生成し、UIView.animationWithDuration; を使用して画面全体でそれらをアニメーション化しています。ただし、ユーザーがドットを操作できるように (タップ可能にする)、animationWithDurations を CADisplayLinks に置き換えたいと考えています。誰かがこれがどのように達成されるかを教えてもらえますか? 前もって感謝します!!

0 投票する
1 に答える
936 参照

ios - for-in-loop を使用して CADisplayLink で複数のオブジェクトを作成する方法

したがって、for inループを使用して10個のボタンを作成し、CADisplayLinkを使用してこれらの10個のボタンすべてを下に移動させようとしています。問題は、CADisplayLink がボタンの 1 つだけを下に移動し、10 個のボタンすべてを移動したいことです。助けてください!前もって感謝します!

}

0 投票する
0 に答える
549 参照

ios - 進行中の CAAnimation への CADisplayLink の変更の同期

CADisplayLink と CAAnimation を組み合わせて、一部のレイヤーを CAAnimation でアニメーション化し、アニメーション レイヤーの変化するプレゼンテーション レイヤーに基づいてリアルタイムで他のレイヤーを調整しようとしています。CADisplayLink コールバックがプロセス内にある間に、CAAnimations がプロセス外で駆動されていることを認識しているため、同期が完全にタイトになることはありません。ただし、私が見ているものよりも優れていることを望んでいました (おそらく最大 4 フレームのラグが見られます)。

簡単なサンプル コードに要約すると、多数のレイヤーのペアが作成されます。半分はアウトラインで、残りの半分は塗りつぶされた正方形です。すべてのアイテムは同じサイズです。目標は、これらの四角形のペアをアニメートして、それらの輪郭と四角形が常に一緒 (つまり、同じフレーム) になるようにすることです。

サイクルごとに、ソリッド レイヤーの新しい位置を設定し、CADisplayLink コールバックで、補完するソリッド レイヤーのプレゼンテーション レイヤーの位置に基づいてアウトライン レイヤーを設定します。シミュレーターでは、これはほとんどの場合、少なくとも少数のレイヤーでは機能するようです。最大 24 ペアのレイヤーを取得すると、一部のアウトラインが遅れ始めます。デバイス (iPad Air と iPhone 6) では、わずか 1 つの正方形でもアウトラインが遅れます。すべてのテストを iOS 8 で行っています。

以下は私のViewControllerの実装です。

3 つの異なるタイミング機能を試しましたが、同じ結果が得られました。また、インストルメントを使用してフレームレートを確認したところ、58 ~ 60 fps であり、まだ目に見える分離が見られます。

誰かがこれを行うためのより良い方法を知っているかどうか疑問に思っています。すべてのアニメーションを CAAnimation または CADisplayLink によって駆動されるように変換できることは承知しています。しかし、私の場合、どちらも魅力的ではありません。画面には何百ものレイヤーがあり、それらはすべて相互接続されています (常に応答性が高く、完全にアニメーション化されたビューを構成しています) - 時には階層的に。Core Animation は生活をより管理しやすくします (そして、ラグの根本的な原因はその「効率」かもしれませんが、より効率的だと思います)。すべてのアニメーションをパラメータ化する必要があることに興奮していません。多数の他のレイヤーのフレームに依存する多数のレイヤーがあります。作業の大部分でアニメーションを実行できるようになり、「手動で」いくつかのコーナーケースを実行するだけです

また、UIKit Dynamics は、アニメーション化されたレスポンシブ ビューの優れた基盤を提供するように構築されていることも認識しています。ただし、レイヤーのサイズを調整していて、画面上のレイヤーの位置には制約とアタッチメントが必要です。特にCPUがすでに制約されている場合は、それを数百、さらには数千のレイヤーにスケーリングすることは問題があるようです.

0 投票する
1 に答える
440 参照

ios - CADisplayLink で遅延を設定する方法

を使用しCADisplayLinkて 10 個の異なるボタンをアニメーション化していますが、ボタンがすべてまとまっています。したがって、私の質問は、各ボタンが異なる時間にアニメーション化されるように遅延を実装して、すべてがまとまらないようにする方法です。

0 投票する
1 に答える
476 参照

ios - 複雑な CALayer 変換の変更を適用するには?

計算が必要な回転および移動プロパティのUIView設定を含むの複雑な連続アニメーションが必要なため、標準のアニメーションはオプションではありません。CATransform3D

CALayerアニメーションを使用するようになりました。そしてこれを持ってください:

これself.imageLayerは、画像CALayercontents設定され、ベースビューにサブレイヤーとして追加された です。

それは「少し」回転しますが、連続的にではなく、時々停止したり、少し逆回転したりするようです。

値がはるかにインクリメントされるため、新しい値を割り当てtransformても効果がないことがよくあるようです。self.rotationを追加し[self setNeedsDisplay]ても役に立ちませんでした。

私はCALayerまだ s をあまり使っていないので、非常に基本的なものが欠けていると思います。しばらくそれを見つけようとしましたが、私が見つけたすべての例は、私が望むものとはかけ離れているようです.