問題タブ [reactive-banana]
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.
haskell - Reactive Banana を使用して基本的な計算を行う
セットアップ:
OpenGL と一緒に Reactive Banana を使用しており、回転させたいギアがあります。次の信号があります。
最終的に、bAngle
どちらが描画関数に渡されるかを計算する必要があります。
角度は簡単に計算できます。a = ∫v(t) dt
質問:
私がやりたいことは、各 eDisplay イベント (または、必要に応じてより頻繁に) について、この積分を概算することだと思います。a = ∑ v Δt
これは正しい方法ですか?もしそうなら、どのように私はΔt
から取得できbTime
ますか?
関連項目: answer が関数を使用していると思われmapAccum
ます。もしそうなら、私の他の質問も見てください。
multithreading - Reactive-Banana 入力ループの開始時に SDL-Mixer オーディオが停止する
私は、マウスの動きに基づいてリアルタイムでボリュームが調整される複数のオーディオ トラックを使用するゲームに取り組んできました。オーディオには SDl-Mixer を使用し、ゲーム全般には Reactive-Banana を使用しています。問題は、最初にすべて開始されたトラックが、入力ループの開始時に再生を停止することです。原因は他にあるのかもしれませんが、SDL と Reactive-Banana の間に私には理解できない奇妙な相互作用があるのではないでしょうか。私はしばらくこれを解明しようとしてきましたが、見落としていた単純なものかもしれません. 前もって感謝します。簡単なテストのコードは次のとおりです。
編集: 問題は必ずしも Reactive Banana にあるとは限りません。あらゆる種類の「永久」ループにより、オーディオが停止します。
haskell - リアクティブバナナの非イベントからイベントを構築する機能がないのはなぜですか?
私は自分自身にFRPとリアクティブバナナを教えながら、私をフォローしている人たちにとってより役立つチュートリアルになることを願っています。ここでチュートリアルの進捗状況を確認できます。
イベントを使用して単純なビーピーノイズの例を実装しようとすると、行き詰まります。私はこのようなことをする必要があることを知っています:
私の中NetworkDescription
で、しかし私はネットワークに同じことを繰り返し実行させる方法、または一度何かを実行させる方法を理解できません。理想的には、私はこのようなものを探しています:
上記のTime
タイプは、最終的に使用する時間の測定の代用にすぎません。「遅延」機能を駆動するための動作としてシステム時間を接続する必要がありますか?それは必要以上に複雑に思えます。
前もって感謝します、
エコーノーラン
編集:さて、repeatWithDelayとconcatWithDelayのタイプは意味がありません。これが私が実際に意味したことです。
haskell - Traveler ゲームにタイマーを実装する
この問題は、私がここで始めたことの続きです。小惑星の例をモデルとして使用しています。
ここでお話ししたい問題は、タイマーの問題です。小惑星の例では、ライブラリevent0
に依存する関数を使用して小惑星を作成しています。Graphics.UI.WX
このプロジェクトに WX を使用したくありません。event0
同様の機能を作成するために何をする必要があるかを理解できるように、誰かが一般的に何をしているのか教えてもらえますか?
haskell - 反応バナナでゲームループを実装するには?
この質問は、物理的および視覚的コンポーネント (ゲームなど) を使用したリアクティブ バナナおよびリアルタイム シミュレーションに固有のものです。
Fix Your Timestepによると!ゲーム ループをセットアップする理想的な方法 (再現性が必要な物理現象を想定) では、フレーム間に固定のタイムステップが必要です。いくつかの実際の複雑さを検討した後、著者は次のゲーム ループに到達します。
dt
概要は、数値安定性のために、物理シミュレーションには常に同じ時間増分 ( ) が供給されるということです。そのための調整では、物理とビジュアルが異なる頻度で更新される可能性があることを考慮する必要があり、遅れすぎないようにする必要があります。
たとえば、20hz の頻度で更新したいが、60hz のフレームレートで視覚的な更新が必要な場合があります。このループは物理の線形補間を行い、物理の更新とグラフィックの更新の違いを補います。
dt
さらに、フレーム間の時間の差が のチャンクでの更新のステップ実行を処理するためのループよりもはるかに大きい場合dt
。死のスパイラルに関するメモは、物理計算が更新の望ましい頻度に追いつかない場合に言及しているだけなので、いくつかの更新をスキップできるようにします。
この議論で私が最も興味を持っている部分は、物理エンジンへの呼び出し ( への呼び出しintegrate
) が常に によってステップ実行されるように調整することdt
です。反応バナナは、ユーザーがこのスタイルのループを書くことを許可しますか? もしそうなら、どのように?おそらく、リアルタイムの物理シミュレーションを実行する例が用意されている (または既に存在する) のでしょうか?
haskell - Functional Banana Traveler - 入力処理
これは、私のTravelerプロジェクトのサブ問題です。
入力を処理する初歩的なコードをまとめました。TChan
ミックスにa を導入するまでは機能します。以下は、実際のコードとその使用方法の例です。次に、それを変更し、なぜそうしているのかを説明します。それから、問題について話します。
以下を実行するghci
と、これが機能することが実証されます。
これで、基本的なメカニズムが整ったので、構築を開始したいと思います。これはマルチプレイヤーゲームになります。入力処理に関する限り、これに対処するための最初のステップは、 から入力を取得することTChan
です。アイデアは、すべてのプレイヤーがこれTChan
に書き込み、各コマンドが到着した順序で処理されるということです。
そこで、新しい関数「inputFrame」を追加しました
これが私がそれを使用しようとする方法ですghci
。
output.txt
には書き込まれません。commandChan
読み込まれた後、空になるかどうかを確認します。私が間違っていることは明らかですか?そうでない場合、問題のトラブルシューティングを行うにはどうすればよいですか? また、私の意図した目的のためにTChan
、正しい選択はありますか?
haskell - Functional Banana Traveler - Behavior t GameState をまとめる
問題は、タイプの動作を作成する方法がわからないことですBehavior t GameState
私はもっと多くのコードを持っていますが、問題について話すために必要だと思うものを表示しようとしています. 記入すべき空白があるかどうか教えてください。私が持っているものは次のとおりです。
そしてイベントネットワーク
bGameState は eCommandChange を使用する必要があると思いますが、型に問題があります
これにより、に変換eInput :: Event t PlayerCommand
する
必要があると信じるようになります。eGameState :: Event t GameState
stepper
Behavior t GameState
それで、私の質問は、私の考え方は正しいですか? そうでない場合は、リダイレクトできますか? もしそうなら、どのようにeGameState :: Event t GameState
見えますか?
以下、回答者様へのお返事です。最初に考えたときaccumB
、作成中に型エラーが発生しました。私があなたの提案を試したときに何が起こったのですか。
エラーが発生します
それについて何をすべきかわからない。あなたの例を見て、答えが明確になるかどうかを確認します。accumB
私が集中していたので、指摘してくれてありがとうstepper
提案されたコードを研究すればするほど、型エラーに戸惑います。
haskell - 機能的反応性バナナ-タイプの混乱
ハインリッヒ・アプフェルムスはこの問題について寛大に話しかけました。解決策として使うことを考えていaccumB
ましたが、型エラーがあるのではないかと思いました。とにかく彼の提案を試した後、私はタイプエラーを受け取りました。
そこで勉強(<$)
して、部分適用をいじりました。彼の提案された例を見てください。これを実行すればするほど、上記のコードが機能するはずだと思い、なぜ機能しないのか困惑します。
これは私が起こっているべきだと思うことです:
(<$)
タイプなので(<$) :: a -> f b -> f a
updateGSはタイプですupdateGS :: PlayerCommand -> GameState -> GameState
タイプeInput
ですEvent t PlayerCommand
その後、updateGS <$ eInput
降伏するべきではありません
Event t (GameState -> GameState)
?
私の推論はどこかに欠陥があります、誰かがどこを指摘できますか?
更新:使用しようとする(<$>)
と、次のエラーが発生しました
outline.hs:158:21:
参考までに、ここに全体の機能があります
user-interface - リアクティブバナナを使用した相互再帰的なGUIウィジェットの処理
GLFWとOpenGLの上にGUIを書くためのライブラリを探しています。これを行うのは、必須であると感じる一般的なUIライブラリバインディングに不満があるためです。また、UIのルックアンドフィールを厳密に制御したいと考えています。UIを定義するための宣言型アプローチが欲しいのですが。私はreactive-banana(および一時的にreactive-banana-wx)を試し、それが私のニーズを満たしているかどうかを確認しています。再帰ウィジェットの定義に問題があります。これが私の最も単純なテストケースです:
- カウンターを表示するテキストウィジェット。
- カウンターをインクリメントするボタンウィジェット。
- カウンターが0の場合は非アクティブ(つまり、グレー表示され、入力にまったく応答しない)のボタンウィジェット。それ以外の場合はアクティブで、カウンターを0にリセットします。
1番目と3番目のウィジェットには再帰的な関係があります。最初のウィジェットは、2つのボタンからフィードされた一連のイベントstepper
の直感的なものです。union
ただし、リセットボタンはfmap
カウンターの1つであり、イベントストリームはリセットボタンに依存しています。やるべきこと?
この質問以外に、イベント処理について懸念があります。フレームワークに依存するのではなく、コード内でデバイス入力と入力フォーカスを処理したいので、スケーラブルな方法でイベントを正しくディスパッチするのは難しいと思います。理想的にはdata
、ウィジェットの階層構造をカプセル化するを定義し、要素間にイベントコールバックをインストールする方法を定義し、デバイスの入力処理とグラフィカル出力を定義するためにそのデータ構造をトラバースする関数を記述します。イベントストリームをマージするのと同じくらい簡単にイベントストリームを取得して分割する方法がわかりません。
user-interface - wxHaskell と Reactive-Banana staticText がテキストの変更時にサイズを更新しない
wxHaskell と Reactive Banana の学習の演習として単純な UI を構築しようとしていますが、一見単純な問題を解決しようとして壁にぶつかりました。具体的には、ラベルのテキストが更新されたときにラベルの周りに収まるようにウィンドウのサイズを変更して、常にテキストに収まるようにしたいと思います。でこれを達成しようとしましたwindowReLayoutMinimal
が、予期せず、テキストがオーバーフローしたときにウィンドウのサイズ変更に失敗し、ウィンドウが手動でサイズ変更されたときに元のサイズと新しいサイズの間でストローブしました (つまり、コーナー)。私が知る限りStaticText
、テキストが変更されたときにアイテムのサイズが更新されません。アイテムの最小サイズを強制的に再計算する方法はありますか? 私のコードは次のようになります。