私はゲームを作ろうとしていますが、次のコードでは、for-loopを使ってswitch文を宣言した関数を定義しました。今はconsole.log()ですべてうまくいきましたが、switch-statementは動作しません。compXとcompYの両方が例えば2より大きい場合でも、switchのcase-statementでコードを実行しません。私はconsole.log()でそれをテストしました。ここでは、'rux 'と'ruy'のケースステートメントで尋ねましたが、コンソールに何も表示されませんでした。だから誰かが私が間違ってやっているアイディアを持っていますか?誰かがそれがどのように機能するかの例を持っていますか? すべての小さな答えに感謝します!javascript - 2つの変数を持つ関数のスイッチ
function updatePosition() {
for (var pc = policeNum; pc > 0; pc--) {
policeRef.child(pc).once('value', function (snapshot) {
var oldData = snapshot.val();
//KI:
var compX = newX - oldData.X;
var compY = newY - oldData.Y;
console.log('We found X:', compX);
console.log('We found Y:', compY);
switch (compX, compY) {
case compX < -2 && compY < -2: //links und oben
var lox = oldData.X - pixelWidth;
var loy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
X: lox,
Y: loy
});
break;
case compX > 2 && compY < -2: //rechts und oben
var rox = oldData.X + pixelWidth;
var roy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
X: rox,
Y: roy
});
break;
case compX < -2 && compY > 2: //links und unten
var lux = oldData.X - pixelWidth;
var luy = oldData.Y + pixelHeight;
policeRef.child(pc).update({
X: lux,
Y: luy
});
break;
case compX > 2 && compY > 2: //rechts und unten
var rux = oldData.X + pixelWidth;
var ruy = oldData.Y + pixelHeight;
console.log('We found rux:', rux);
console.log('We found ruy:', ruy);
policeRef.child(pc).update({
X: rux,
Y: ruy
});
break;
case compX > -2 && compX < 2 && compY > 2: //unten
var uy = oldData.Y + pixelHeight;
console.log('We found uy:', uy);
policeRef.child(pc).update({
Y: uy
});
break;
case compX > -2 && compX < 2 && compY < -2: //oben
var oy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
Y: oy
});
break;
case compY > -2 && compY < 2 && compX > 2: //rechts
var rx = oldData.X + pixelWidth;
policeRef.child(pc).update({
X: rx
});
break;
case compY > -2 && compY < 2 && compX < 2: //links
var lx = oldData.X - pixelWidth;
policeRef.child(pc).update({
X: lx
});
break;
}
context.clearRect(oldData.Y, oldData.X, pixelHeight, pixelWidth)
});
updateDraw();
}
}
'switch'文は** 1つの**表現で動作し、ありません二。 2つの式をJavaScriptでカンマで区切るのは誤りではありませんが、重要な表現は第2の表現だけです。 'switch'と' case'コードを一連の 'if'と' else if'文で置き換えなければなりません。 – Pointy
スイッチを 'switch(true)'に置き換え、大文字と小文字が括弧で囲まれていることを確認します。 'case(compX <-2 && compY <-2):'であり、意図した通りに動作するはずです。 – DBS