オープンソースプロジェクトのRetro Graphics Toolkit(詳細については https://github.com/ComputerNerd/Retro-Graphics-Toolkit を参照)の改善を目指しており、追加する予定の1つの機能は元に戻すです/やり直し。問題は、私のプログラムがスライダーを多用していることです。これを説明するために、ここに私のプログラムのスクリーンショットがあります。
私がスライダーが好きな理由は、ユーザーが設定したいものに最小値と最大値があることをユーザーに伝えるための瞬時のフィードバックと簡単な方法です(このプログラムが古いゲームコンソール用である場合)、Sega Genesisのみがサポートしています最大4x4タイルのスプライトなので、スプライトのサイズを4x4に制限するのは簡単です。この例(スプライトエディター)でスライダーをドラッグすると、変更が行われたことがわかります。スライダーが移動するたびに、コールバック関数が呼び出されます。古い値を元に戻すスタックにプッシュするコードを追加できます。問題は、ユーザーがスライダーを操作する方法にあります。スライダーの適切な場所をクリックして正しい値を取得するのではなく、ユーザーがこの0、1、2、3のようにスライダーをドラッグしてターゲットに到達するとします。変更を元に戻すときに、元に戻すスタックに変更をプッシュするだけでは、元に戻す必要があるのは非常に煩わしいでしょう... 3、2、1、0だけを望んでいたとしても。現在の)は、別のスライダーを使用した後、または何かを行った後、またはタイムアウト後に、古い値を元に戻すスタックにのみプッシュすることです。このシステムは十分に堅牢であるとは思いません。もっと良い方法があるはずだと思います。だからと言ってスライダーの元に戻すを実装する方法について誰もがより良い考えを持っていますか?私は適用ボタンを持つことを考えましたが、それは非常に迷惑であることがわかります。または、スライダーを交換することもできますが、何を使用しますか?
元に戻すことは問題にならないと思います。
Photoshopで選択範囲を微調整(ピクセル移動)した場合、同じ詳細レベルで元に戻す(およびやり直す)likeを行います。 CTRL + Z(またはCommand + Z)を20回押す必要がある場合-それは問題ではありません。
そう。いつでもプッシュして元に戻すスタック:
ユーザーが行うすべてのステップを元に戻さなければならない制御の量と、履歴内の新しいステップとしてすべての小さな変更を保存するという負担との間で、妥当な妥協を図る必要があると思います。元に戻す手順としてすべての変更を1つのスライダーに保存すると、履歴スタックが詰まる可能性があります。たとえば、メモリ使用量を節約するために履歴の状態に上限を設定する必要がある場合、ユーザーが他のコントロールを編集する前にスライダーに100の変更を加えると、これらのすべての手順で履歴の100ステップが無駄になります。
ユーザーとして、別のコントロールを使用する前に、1つのスライダーに加えたすべての変更をトラバースする必要があることにも悩まされます。編集する前の初期値に戻したいと思います。より迅速に元に戻すことができるように、このコントロールを犠牲にします。
また、ユーザーの不必要な混乱を避けたい場合もあります。たとえば、タイムアウトを使用すると、ユーザーのアクションが履歴に元に戻すアクションとして保存されることがありますが、(タイムアウトに達したかどうかによって)履歴が保存されない場合があります。これにより、ユーザーが行った操作を元に戻すことができるかどうかについてユーザーに不確実性が生じる可能性があります。
履歴全体の1つのステップとして、変更全体を1つのスライダーに保存します。ユーザーがそのスライダー以外で変更を行うと、履歴に新しいステップが作成されます。
例