問題タブ [calayer]
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.
ios - CALayer を即座に (アニメーションなしで) 移動する方法
CALayer
iOS アプリでをドラッグしようとしています。
位置プロパティを変更するとすぐに、新しい位置にアニメーション化しようとし、あちこちでちらつきます。
どうすればCALayers
瞬時に移動できますか? Core Animation API について理解できないようです。
ios - パースペクティブ変換を UIView に適用するにはどうすればよいですか?
UIView でパースペクティブ変換を実行しようとしています (coverflow に見られるような)
これが可能かどうか誰にもわかりますか?
私はCALayer
すべての実用的なプログラマー Core Animation ポッドキャストを使用して調査し、実行しましたが、iPhone でこの種の変換を作成する方法についてはまだ明確ではありません。
ヘルプ、ポインタ、またはサンプル コード スニペットをいただければ幸いです。
iphone - iPhone で手動でアニメートするにはどうすればよいですか?
私は非常に単純な「ゲーム」を iPhone にセットアップしました。物事は動き回ったり、回転したり、操作したりできます。シミュレーターでは問題なく動作しますが、デバイスでは約 0.25 FPS になり、タッチを認識する時間がないほど遅いようです。
Item
これはもともと、それぞれが Tick と Draw 関数を持つ s の配列を持つ UIView を使用していました。アプリの開始時に、Tick を呼び出す 60 FPS で発射するタイマーを開始し、Tick の最後に呼び出します。[self setNeedsDisplay];
動作が非常に遅かったので、アイテムを再描画する代わりにレイヤーを移動してItem
、クラスをクラスのサブクラスに変えました。CALayer
ただし、CALayer
フレームごとに手動で動かしていましたが、これは明らかに良くありません。それでも遅すぎました。そこで、最終目的地に移動するように指示し、そこに到達するまでのティック数に等しい長さを与えました。
それは問題なく機能しましたが、何かを操作すると、その動きを止めて代わりに別のことをする必要がある場合があります。そこで、すべてのティックを移動することに戻り、新しい位置を設定するだけでなく、それを CATransaction でラップし、トランザクションにティックと同じ長さを与えました。
正常に動作しますが、新しい問題が発生します。何かをアニメーション化する場合、 を呼び出すティックごとに [self setNeedsDisplay] を使用する必要がdrawInContext:
あり、これは速度低下の大きな問題のようです。
以前のようにすべてを手動で描画する方法はありませんか? CGContext* 呼び出しを行っていたところ、シミュレーターで問題なく動作しました。J2ME または組み込み C++ で同様のものを実装すれば、問題なく動作します。私は何が欠けていますか?興味深い手動アニメーションを作成するには、OpenGL を学ぶ必要がありますか?
cocoa-touch - パスを描画するときに CALayer がちらつく
を使用して、レイヤーが属するビューのビューコントローラーにあるデリゲートメソッドCALayer
を介してパスを表示しています。drawLayer:inContext
ユーザーが画面上で指を動かすたびに、パスが更新され、レイヤーが再描画されます。ただし、描画はタッチに追いついていません。パスの最後の 2 点の表示には常にわずかな遅れがあります。また、ちらつきますが、最後の 2 ~ 3 ポイントを再び表示している間だけです。ビューのdrawRect
で描画を行うと、正常に動作し、描画は間違いなく十分に高速です。
なぜこのように振る舞うのか誰にも分かりますか?レイヤーのバッファリングに関係していると思われますが、それに関するドキュメントは見つかりませんでした。
iphone - CALayerでタッチイベントを取得するには?
iPhone SDK は初めてです。現在、私はとても気に入っている CALayers でプログラミングしています。UIViews ほど高価ではなく、OpenGL ES スプライトよりもはるかに少ないコードです。
この質問があります: CALayer でタッチ イベントを取得することは可能ですか? UIViewでタッチイベントを取得する方法を理解しています
しかし、CALayer オブジェクト (3D 空間に浮かぶオレンジ色の正方形など) でタッチ イベントを取得する方法についてはどこにも見つかりません。これについて興味を持っているのは私だけだとは信じられません。
どんな助けにも感謝します!
iphone - CALayer をどのようにコピーしますか?
CALayer の複数のインスタンス (すべて同じフレーム、コンテンツなど) でいっぱいの NSArray を作成するにはどうすればよいですか?
背景: CALayer は作成に多少のオーバーヘッドがかかるため、クラスの init メソッドで多数の CALayer (すべて同じプロパティを共有) を作成したいと考えています (後でそのクラスで使用します)。
iphone - iPhoneで複数のアニメーションを作成するにはどうすればよいですか?
ゲームの複数のピースをアニメーション化したいのですが、それらのピースを異なる方向に移動させたいので、ビュー全体をアニメーション化する現在の方法は機能しなくなります。
一度に複数のアイテムをアニメーション化するためのベストプラクティスは何でしょうか。(私は2Dでレンダリングしているので、現在3Dソリューションには興味がないことに注意してください。)
ありがとう!
iphone - iPhone で UIColor を最適化するにはどうすればよいですか?
カスタム スライダー タイプ コントロールによって制御される単純なカラー ピッカーを作成しています。
スライダーから UIColor コンストラクター メソッドに float 値を渡し、値が変化すると CALayer の背景色を更新します。
シミュレーターでは非常にスムーズに動作しますが、デバイスで実行するとちらつきが多くなります。
これは、GPU に負担がかかりすぎているためですか? 妙にブルーの中を移動するときは最悪です。また、アルファ値と明るさを変更すると、彩度と色相を変更するよりもちらつきが大きくなります。
スライダーの値が変化するときに、任意の float 値を渡すべきではありませんか? そうでない場合、最適化のためにこれをより少ない色に制限するにはどうすればよいですか?
CALayer の backgroundColor プロパティの暗黙的なアニメーションを無効にすることを考えましたが、これを行う方法がわかりません。
UIColor の変更を最適化するためのトリックはありますか?
アップデート
drawRect: または drawInRect: を使用していません。
CALayer の backgroundColor プロパティを変更しているだけです。touchesMoved: が呼び出されるたびに、位置を取得し、0.0 から 1.0 の float 値を作成して、値が変更されたというメッセージをデリゲートに渡し、-(void)updateCurrentColor メソッドを呼び出します。
これが私の実装の例です:
最初は、タッチ インターフェースの不正確さによる値の飛び越しだと思いました。スムージング機能は役に立ちましたが、場所が 1 ピクセルしか変化しない場合でも、特にアルファ値でちらつきが発生します。任意のフロートを渡すのではなく、これを限られた量の色/値に制限する必要がありますか? 繰り返しますが、シミュレーターでうまく動作しますが、単なるパフォーマンスの問題のようです。
iphone - iPhone SDK で CALayer の visibleRect プロパティにアクセスできないのはなぜですか?
これを行うのに問題があります:
私が得るエラーは次のとおりです。
エラー: 構造体または共用体ではないメンバー 'visibleRect' の要求
しかし、ドキュメントには次のように書かれています:
visibleRect レシーバーの可視領域を独自の座標空間で返します。(読み取り専用) @property(読み取り専用) CGRect visibleRect
QuartzCore.framework、CoreGraphics.framework、UIKit.framework、Foundation.framework を含めました。
それが CGRect を返す場合、なぜ機能しないのでしょうか? 何か案が?