問題タブ [caemitterlayer]
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.
android - Android には、サークル エミッタ用の iOS CAEmitterLayer のようなパーティクル エミッタがありますか?
私の問題は今のところ解決が難しいです。
私は同僚と一緒に、iOS で同じことを行う Android アプリケーションを開発することになっています。
開発の最後には、同じことを行い、見た目が似ている 2 つのアプリケーションを提供することになっています (ご安心ください。iOS のガイド ラインが Android に強制されているようなものではありませんし、その逆もありません)。
提供する最高の機能の 1 つは、円の内側に雪のような粒子を放出する白い空の円の見栄えの良いアニメーションです。円は、スクロールまたは単純なバウンス/スライド アニメーションによって移動できます。
白い境界線があり、その白い膜から白い粒子が飛び散る円を想像してみてください。これらのパーティクルはすべて中心に引き寄せられ、速度ベースは変化します (ただし、加速はありません!)。最速の粒子は、中心に到達する前に「死ぬ」と想定されています。もちろん、寿命と速度の設定で簡単に設定できるもの。
私のような後輩である私のパートナーは、iOS の CAEmitterLayerを使用しており、彼女が 1、2 日で得た結果は素晴らしく、私たちが達成しようとしているものに非常に近いものです。
私の側では、私は本当に苦労しています。彼女と同じように、私もアニメーションや UI/UX の経験はまったくありません。Androidでパーティクルジェネレーター/エミッターを探しているときに、この見栄えの良いライブラリに出くわしました: https://github.com/plattysoft/Leonids探しているものを提供できるようです。
しかし、このライブラリを使用して未解決の問題がいくつかあります。
- 円の中にエミッタを配置できるかどうかわからない、またはできない;
- エミッターがフックされている円が動いている場合 (スクロール/アニメーション)、パーティクルが円と一緒に動かない可能性が高いと思います。
私が言ったように、iOS の同僚がこれらの問題を解決しました。動く部分でさえ:私たちはマネージャーと話していて、「円が動いたらどうなるの?」と言っていました。彼女はすぐに私たちの前でそれを試しました。私は吹き飛ばされました...
彼女は、コンテナ内にパーティクルを格納する方法を探すべきだと言いました(理にかなっています ^^)。特に全体が動いている場合にパーティクルが円から離れないように、円のビューをレイヤーでクリップする必要があるとのことでした。 .
これは、前述の Android ライブラリのおかげで達成したものです。
- パーティクルを放出し、その形状、スケール/サイズ、速度、放出角度を定義できます。
- パーティクル エミッターをビューに接続できます。ビューのX&Y 座標を使用してパーティクルを放出しますが、ここのようなXML ベースの円のドローアブルの問題は、それが正方形ベースのビュー ( aと a )内に含まれていることです。奇妙な理由で、私の円はその上に描画されます。と述べた平方ベースのビュー。
height
width
別のライブラリを見つけられることを願っていますが、現在のライブラリが機能している場合はどうですか? 運試し中です^^
助けてくれてありがとう !
ios - iOS パーティクル システム コントロール
iOS のパーティクル システム (スプライト キットまたは CAEmitterLayer) が自分のタスクに適しているかどうかを理解しようとしています。
質問:エミッタがパーティクルを作成するタイミングを制御する方法はありますか? 特に、いつ放出し、いつ放出を停止するかをエミッタに伝えます。
理論的根拠:基本的には、パーティクルを使用して音楽イコライザー (ビジュアライザー?) エフェクトを作成したいと考えています。周波数ごとにエミッターを用意して、その時点でのその周波数の信号強度に応じて形状/速度が異なる粒子を作成することを考えました。
これがパーティクルで可能かどうか、そうでない場合は効果的に行う方法を教えてください (レイヤー?ビュー?)。OpenGL のレベルが低すぎます。
macos - レイヤーに裏打ちされた NSView を備えた透明な NSWindow
Apple のRoundTransparentWindowサンプル プロジェクトを適応させて と を作成しNSWindow
、NSView
これを使用して透明なウィンドウを作成しました (明らかに の子NSView
は表示されますが、ウィンドウやビューの背景は表示されません)。
このウィンドウに for パーティクル エフェクトを追加したいのですがCAEmitterLayer
、ビューをレイヤー バックに設定するとすぐに (これはの要件のようCAEmitterLayer
です)
ビューは透明度を失い、不透明になります。
レイヤーで裏打ちされた透明な を作成するにはどうすればよいNSWindow
ですか? CAEmitterLayer
または、透明なウィンドウで別の方法で使用することは可能ですか?
ios - beginTime が設定されている場合、CAEmitterLayer は基本的なアニメーションを追加しません。
CAEmitterLayer
といくつかの で爆発をアニメーション化しようとしていCAEmitterCell
ます。これは、ユーザーがビューを表示した後、少し遅れて発生するはずです。でアニメーションを開始しviewDidAppear
ます。
パーティクル アニメーション自体は正常に動作しますが、この質問のように、アニメーションがしばらく実行されているものとしてユーザーに表示されるように設定しない限り、CAEmitterLayer からの初期パーティクルはエミッタ位置で開始されません。emitterLayer.beginTime = CACurrentMediaTime()
実際に爆発を起こすには、ある時点でパーティクルの放出を停止する必要があります。このコードを使用してCABasicAnimation
、しばらくするとエミッターを停止するセットアップを試みます。
したがって、このコードbirthRateAnimation
では実際にはトリガーされません。ログインしanimationDidStop
ていますが、animationDidStart
何も印刷されません。
ここで、explode
ボタン タップで関数を呼び出すと、パーティクル アニメーションはまったく表示されませんが、ログには「アニメーション開始」/「アニメーション停止」メッセージが表示されます。
理由はありますか?