次の 2 つの方法を使用します。
function moveUp() {
this.element.rotate(0);
this.element.animate({"margin-top": "-=51px"}, "slow");
//do some more things for instance.
}
function moveRight() {
this.element.rotate(90);
this.element.animate({"margin-left": "+=51px"}, "slow");
}
念のため、オブジェクトを回転させてから、アニメーションで動かします。これらの機能はキーの押下にマッピングされているため、ユーザーが上または右を押すと、オブジェクトが移動します。私の問題は、jQuery が fx キューを使用するため、アニメーションが適切にキューに入れられることです。ただし、ローテーションは、コード内にあるカスタムのものであるため、私が行う他のことと同様に、すぐに発生します。
結果は明らかです。Say Up を押してすぐに右を押すと、オブジェクトは上に回転しますが、上に移動している間は右に回転し、そこに到達するまで実際には待機しません。
アニメーションだけでなく、メソッド全体がチェーンされるように、このコードをどのように書くことができますか。コールバックを追加することはできますが、常に一緒に実行されるとは限りません。同時に呼び出された場合はキューに入れる必要がありますが、jQuery でキュー機能を使用する方法がよくわかりません。
ところで、この背後にあるコードをもっと見るために、私は最近この質問もしました:プロトタイプ関数の配列