質問

2 つの変数 (xSpeed と ySpeed) があり、minSpeed を下回ったときにそれらを個別に 0 に設定し、両方とも 0 になったときに終了するという一般的な状況があります。

最も効率的な方法は何でしょうか?現在、私には 2 つの方法があります (方法 2 の方がきれいです) が、皆さんがもっと良い方法を知っているかどうか疑問に思っていました。

Method1:

bool isZeroX = Math.abs(xSpeed)< minSpeed;
bool isZeroY = Math.abs(ySpeed)< minSpeed;

if(isZeroX && isZeroY) return -1;
else if(isZeroX) xSpeed = 0;
else if(isZeroY) ySpeed = 0;

Method2:

if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
if(ySpeed==0 && xSpeed==0) return -1;
役に立ちましたか?

解決

できるよ

if(-minSpread < xSpeed && xSpeed < minSpeed) {
    xSpeed = 0;
    if(-minSpread < ySpeed && ySpeed < minSpeed) {
        ySpeed = 0;
        return -1;
    }
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
    ySpeed = 0;
}

他のヒント

2 番目の例が最も読みやすいので、これを推奨します。最適化する必要があることが証明できない限り、効率よりも読みやすさを優先してください。

おそらく、オブジェクトが移動しているか停止しているかを確認するためのエレガントなブール メソッドを作成してください。

boolean isStopped() {
    if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
    if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;

    return (ySpeed==0 && xSpeed==0);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top