私は、ユーザーが図形を描画して移動できる場所にプログラムを作っているとします。コマンドパターン:どのようにして連続的な操作を行うことができますか? (例えば、オブジェクトを動かす)
class MoveCommand {
public:
MoveCommand(Shape& shape, const Vector2f& offset) :
shape(shape), offset(offset)
{ }
void execute() {
shape.move(offset);
}
void undo() {
shape.move(-offset);
}
private:
Shape& shape;
Vector2f offset;
};
これはうまく動作しますが、(ユーザーがマウスボタンを保持している場合)どのように私は運動のプレビューを表示することができ、その後、マウスボタンのリリースにオフセットのみ店舗決勝:MoveCommand
は、このような何かを見ることができますか?
ShapeEditor
クラスはシェイプを移動し、ボタンを離したときにMoveCommand
を作成する必要がありますか?のコードが簡単ではない場合はどうなりますか? ShapeEditor
とMoveCommand
でコードの重複を避けるにはどうすればよいですか?
こんにちは、あなたは4年ほどゲームトップダウンを書いていますか?それの中のエディターで笑って! XD ............. shape.move(-offset);これは本当に効果がありますか?前のフレームと全く同じオフセットを得ることはできません。 –
@LorenceHernandezええ、それは私です! :D オブジェクトが(20,30)にあり、オフセットが(10,20)であるとします。オブジェクトを移動した後、新しい位置は(30、50)です。 (-10、-20)で移動すると、コマンド実行前の位置になります(20,30)。 –
大丈夫です。あなたがデルタ時間を使っていて、0.424,0.399,0.524のようになったと思っていました。これらの値では、元に戻すことは不完全です。 theresはゲームプログラミングパターンと呼ばれる本は非常によく私は思うコマンドパターンを説明する?私はそれを読んで終わったので、私はhavent –