問題タブ [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.

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

haskell - Reactive Banana を使用して基本的な計算を行う

セットアップ:

OpenGL と一緒に Reactive Banana を使用しており、回転させたいギアがあります。次の信号があります。

最終的に、bAngleどちらが描画関数に渡されるかを計算する必要があります。

角度は簡単に計算できます。a = ∫v(t) dt

質問:

私がやりたいことは、各 eDisplay イベント (または、必要に応じてより頻繁に) について、この積分を概算することだと思います。a = ∑ v Δtこれは正しい方法ですか?もしそうなら、どのように私はΔtから取得できbTimeますか?

関連項目: answer が関数を使用していると思われmapAccumます。もしそうなら、私の他の質問も見てください。

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

multithreading - Reactive-Banana 入力ループの開始時に SDL-Mixer オーディオが停止する

私は、マウスの動きに基づいてリアルタイムでボリュームが調整される複数のオーディオ トラックを使用するゲームに取り組んできました。オーディオには SDl-Mixer を使用し、ゲーム全般には Reactive-Banana を使用しています。問題は、最初にすべて開始されたトラックが、入力ループの開始時に再生を停止することです。原因は他にあるのかもしれませんが、SDL と Reactive-Banana の間に私には理解できない奇妙な相互作用があるのではないでしょうか。私はしばらくこれを解明しようとしてきましたが、見落としていた単純なものかもしれません. 前もって感謝します。簡単なテストのコードは次のとおりです。

編集: 問題は必ずしも Reactive Banana にあるとは限りません。あらゆる種類の「永久」ループにより、オーディオが停止します。

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

haskell - リアクティブバナナの非イベントからイベントを構築する機能がないのはなぜですか?

私は自分自身にFRPとリアクティブバナナを教えながら、私をフォローしている人たちにとってより役立つチュートリアルになることを願っています。ここでチュートリアルの進捗状況を確認できます。

イベントを使用して単純なビーピーノイズの例を実装しようとすると、行き詰まります。私はこのようなことをする必要があることを知っています:

私の中NetworkDescriptionで、しかし私はネットワークに同じことを繰り返し実行させる方法、または一度何かを実行させる方法を理解できません。理想的には、私はこのようなものを探しています:

上記のTimeタイプは、最終的に使用する時間の測定の代用にすぎません。「遅延」機能を駆動するための動作としてシステム時間を接続する必要がありますか?それは必要以上に複雑に思えます。

前もって感謝します、

エコーノーラン

編集:さて、repeatWithDelayとconcatWithDelayのタイプは意味がありません。これが私が実際に意味したことです。

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

haskell - Traveler ゲームにタイマーを実装する

この問題は、私がここで始めたことの続きです。小惑星の例をモデルとして使用しています。

ここでお話ししたい問題は、タイマーの問題です。小惑星の例では、ライブラリevent0に依存する関数を使用して小惑星を作成しています。Graphics.UI.WXこのプロジェクトに WX を使用したくありません。event0同様の機能を作成するために何をする必要があるかを理解できるように、誰かが一般的に何をしているのか教えてもらえますか?

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

haskell - 反応バナナでゲームループを実装するには?

この質問は、物理的および視覚的コンポーネント (ゲームなど) を使用したリアクティブ バナナおよびリアルタイム シミュレーションに固有のものです。

Fix Your Timestepによると!ゲーム ループをセットアップする理想的な方法 (再現性が必要な物理現象を想定) では、フレーム間に固定のタイムステップが必要です。いくつかの実際の複雑さを検討した後、著者は次のゲーム ループに到達します。

dt概要は、数値安定性のために、物理シミュレーションには常に同じ時間増分 ( ) が供給されるということです。そのための調整では、物理とビジュアルが異なる頻度で更新される可能性があることを考慮する必要があり、遅れすぎないようにする必要があります。

たとえば、20hz の頻度で更新したいが、60hz のフレームレートで視覚的な更新が必要な場合があります。このループは物理の線形補間を行い、物理の更新とグラフィックの更新の違いを補います。

dtさらに、フレーム間の時間の差が のチャンクでの更新のステップ実行を処理するためのループよりもはるかに大きい場合dt。死のスパイラルに関するメモは、物理計算が更新の望ましい頻度に追いつかない場合に言及しているだけなので、いくつかの更新をスキップできるようにします。

この議論で私が最も興味を持っている部分は、物理エンジンへの呼び出し ( への呼び出しintegrate) が常に によってステップ実行されるように調整することdtです。反応バナナは、ユーザーがこのスタイルのループを書くことを許可しますか? もしそうなら、どのように?おそらく、リアルタイムの物理シミュレーションを実行する例が用意されている (または既に存在する) のでしょうか?

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

haskell - Functional Banana Traveler - 入力処理

これは、私のTravelerプロジェクトのサブ問題です。

入力を処理する初歩的なコードをまとめました。TChanミックスにa を導入するまでは機能します。以下は、実際のコードとその使用方法の例です。次に、それを変更し、なぜそうしているのかを説明します。それから、問題について話します。

以下を実行するghciと、これが機能することが実証されます。

これで、基本的なメカニズムが整ったので、構築を開始したいと思います。これはマルチプレイヤーゲームになります。入力処理に関する限り、これに対処するための最初のステップは、 から入力を取得することTChanです。アイデアは、すべてのプレイヤーがこれTChanに書き込み、各コマンドが到着した順序で処理されるということです。

そこで、新しい関数「inputFrame」を追加しました

これが私がそれを使用しようとする方法ですghci

output.txtには書き込まれません。commandChan読み込まれた後、空になるかどうかを確認します。私が間違っていることは明らかですか?そうでない場合、問題のトラブルシューティングを行うにはどうすればよいですか? また、私の意図した目的のためにTChan、正しい選択はありますか?

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

haskell - Functional Banana Traveler - Behavior t GameState をまとめる

問題は、タイプの動作を作成する方法がわからないことですBehavior t GameState

私はもっ​​と多くのコードを持っていますが、問題について話すために必要だと思うものを表示しようとしています. 記入すべき空白があるかどうか教えてください。私が持っているものは次のとおりです。

そしてイベントネットワーク

bGameState は eCommandChange を使用する必要があると思いますが、型に問題があります

これにより、に変換eInput :: Event t PlayerCommandする 必要があると信じるようになります。eGameState :: Event t GameStatestepperBehavior t GameState

それで、私の質問は、私の考え方は正しいですか? そうでない場合は、リダイレクトできますか? もしそうなら、どのようにeGameState :: Event t GameState見えますか?

以下、回答者様へのお返事です。最初に考えたときaccumB、作成中に型エラーが発生しました。私があなたの提案を試したときに何が起こったのですか。

エラーが発生します

それについて何をすべきかわからない。あなたの例を見て、答えが明確になるかどうかを確認します。accumB私が集中していたので、指摘してくれてありがとうstepper

提案されたコードを研究すればするほど、型エラーに戸惑います。

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

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:

参考までに、ここに全体の機能があります

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

user-interface - リアクティブバナナを使用した相互再帰的なGUIウィジェットの処理

GLFWとOpenGLの上にGUIを書くためのライブラリを探しています。これを行うのは、必須であると感じる一般的なUIライブラリバインディングに不満があるためです。また、UIのルックアンドフィールを厳密に制御したいと考えています。UIを定義するための宣言型アプローチが欲しいのですが。私はreactive-banana(および一時的にreactive-banana-wx)を試し、それが私のニーズを満たしているかどうかを確認しています。再帰ウィジェットの定義に問題があります。これが私の最も単純なテストケースです:

  • カウンターを表示するテキストウィジェット。
  • カウンターをインクリメントするボタンウィジェット。
  • カウンターが0の場合は非アクティブ(つまり、グレー表示され、入力にまったく応答しない)のボタンウィジェット。それ以外の場合はアクティブで、カウンターを0にリセットします。

1番目と3番目のウィジェットには再帰的な関係があります。最初のウィジェットは、2つのボタンからフィードされた一連のイベントstepperの直感的なものです。unionただし、リセットボタンはfmapカウンターの1つであり、イベントストリームはリセットボタンに依存しています。やるべきこと?

この質問以外に、イベント処理について懸念があります。フレームワークに依存するのではなく、コード内でデバイス入力と入力フォーカスを処理したいので、スケーラブルな方法でイベントを正しくディスパッチするのは難しいと思います。理想的にはdata、ウィジェットの階層構造をカプセル化するを定義し、要素間にイベントコールバックをインストールする方法を定義し、デバイスの入力処理とグラフィカル出力を定義するためにそのデータ構造をトラバースする関数を記述します。イベントストリームをマージするのと同じくらい簡単にイベントストリームを取得して分割する方法がわかりません。

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

user-interface - wxHaskell と Reactive-Banana staticText がテキストの変更時にサイズを更新しない

wxHaskell と Reactive Banana の学習の演習として単純な UI を構築しようとしていますが、一見単純な問題を解決しようとして壁にぶつかりました。具体的には、ラベルのテキストが更新されたときにラベルの周りに収まるようにウィンドウのサイズを変更して、常にテキストに収まるようにしたいと思います。でこれを達成しようとしましたwindowReLayoutMinimalが、予期せず、テキストがオーバーフローしたときにウィンドウのサイズ変更に失敗し、ウィンドウが手動でサイズ変更されたときに元のサイズと新しいサイズの間でストローブしました (つまり、コーナー)。私が知る限りStaticText、テキストが変更されたときにアイテムのサイズが更新されません。アイテムの最小サイズを強制的に再計算する方法はありますか? 私のコードは次のようになります。