問題タブ [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 に答える
3028 参照

ios - iOS アプリケーションで目的のレンダリング頻度 (FPS) を設定する方法は?

メソッド/ハンドラーを使用CADisplayLinkしてiOSアプリで使用しています。renderOneFrame私の理解では、これは画面がリフレッシュされるたびに、つまり 60Hz でトリガーされるということです。

しかし、私のアプリは 60FPS での実行に苦労しており、さらに機能を追加する必要があるため、古いハードウェアでは実現できないのではないかと心配しています。可変レートで実行するのではなく、30 FPS でレンダリングして、余裕を持たせたいと思います。

これを簡単に実現する方法はありますか?

これがコアのようですが、私は iOS に移植する C++ コーダーなので、少し混乱しています (見つけたサンプルからコピーしました)。

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

ios - iOS - CALayer のコンテンツの変更を検出する

私は を持ってCALayerCAKeyFrameAnimationます。

の内容の変更を検出する方法はありCALayerますか?

CALayerの内容(画像)がで変わるたびにCAKeyFrameAnimationで短い音を鳴らしたいという感じAVAudioPlayerです。

アップデート

こんな感じで解決しました。

CADisplayLinkもちろん、不要になったら無効にすることを忘れないでください。

0 投票する
2 に答える
1242 参照

iphone - CADisplayLink と UIView のアニメーションが信頼できない

再帰的なアニメーションを処理する Animations Manager クラスを作成しようとしています。それは機能していますが、信頼性が低いです。たとえば、時々、それを使用すると、アニメーションは「連続して」発生し、その間に遅延はありません。それを使用すると、アニメーション間に遅延が残ります(これは、他のView Controllerにある他の要素で発生しています)

これが私のコードです:

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

ios - コレクション ビューの各セルに複数の CADisplayLink オブジェクトを使用するか、単一の displayLink と forward コールバックを使用するか

より効率的なものは何CADisplayLinkですか? 複数のインスタンスをセルごとに 1 つ持つか、単一のインスタンスを持ち、各セルに呼び出しを転送しますか?

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

objective-c - CADisplayLink を動的周波数タイマーとして使用する

ユーザーが設定した頻度に基づいて、アプリ内のいくつかの画像をフェードイン/フェードアウトするために NSTimer を使用しています。たとえば、ユーザーが頻度を 5 秒に設定した場合、5 秒ごとに次のコードが実行されます。

(正確なコードは重要ではなく、フェードイン/フェードアウトの全体的な考え方だけです。)ただし、StackOverflow やさまざまな Web サイトで多くの人が指摘しているように、NSTimer を使用するとアニメーションが途切れる結果になります。フレームレート。そこで、代わりに CADisplayLink を使用しようとしました:

ただし、これは望ましい効果がありません。画像は、5 秒ごとにフェードイン/アウトするのを待つのではなく、非常に高速に連続して表示されます。

それを行う適切な方法は何ですか?

0 投票する
3 に答える
1448 参照

ios - 実行ループから CADisplayLink を削除するとゲームがクラッシュすることがある

これは、ゲームをプレイするたびに発生するわけではなく、5 回または 10 回のプレイごとに発生する可能性があります。ゲームが終了したら、CADisplayLink (Flappy Bird のパイプのように、プレイ エリアをアニメーション化するために使用します) を実行ループから削除します。ただし、まれに、その行でクラッシュします。行の横には、次のものがあります。

これはコードです:

最初の CADisplayLink 部分をコメントアウトすると、とにかく 2 番目の部分でクラッシュします。

これはスタックトレースです:

ここに画像の説明を入力

上記と同じ「スレッド1」エラーがあります。

何が起こっている??

0 投票する
2 に答える
8209 参照

ios - iOS アプリの FPS (1 秒あたりのフレーム数) をプログラムで計算する方法はいくつありますか?

について話しているのでprogrammatically楽器は考慮していません。

事前にリストされているいくつかの参照:

1. CADisplayLink の使用

ドキュメントによると、

duration プロパティは、フレーム間の時間を提供します。アプリケーションでこの値を使用して、ディスプレイのフレームレートを計算できます...

私のデモ プロジェクトでは、UITrackingRunLoopMode の mainRunLoop に displayLink を追加します。

durationFPS の計算に使用します。しかし、私の予想外ではduration、tableView がスムーズにスクロールするかどうかに関係なく、常に 0.016667 (~ FPS 60) です。

tableView ラグを作成する方法は、次のように 1 行追加することです- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

それから私はに目を向けましたdisplayLink.timestamp、そしてそれはうまくいきました。

2.観察drawRect:

私の2番目のアイデアは、を観察することですdrawRect:。tableViewがスクロールdrawRect:すると、フレームごとに呼び出され、呼び出し間の時間差に従ってFPSを計算できると思いましたdrawRect:

しかし、それは失敗しました。これは、drawRect:が 1 回だけ呼び出されたためです (while セルが何度も)。この方法は に似てUsing CADisplayLinkいますが、観察するために間違った位置/方法 ( などdrawRect:) を選択した可能性があります。観察するための推奨される方法はありますか?

質問:

  1. 計測器が FPS を正確に測定する方法は?
  2. ドキュメントusing duration to calculate FPS間違っていると言っていますか?
  3. FPS を計算するために観察する正しい/最良の方法は何ですか?

ありがとう!