私のコンピュータ科学のクラスでは、ゲームを作成するように求められました。私がマウス入力の問題に来るまで、すべてがスムーズに進んでいました。私が達成しようとしているのは、JFrameの特定の位置でマウスをクリックし、次に弾丸を自分のキャラクターの位置で初期化し、マウスのポイントに向けて撃つことです。私はすでに弾丸をその角度で撃つためにtrigを使う方法を理解しています。問題は、マウスをクリックした後に弾丸を撃つと、私のキャラクターのxとyの位置が弾に更新されないということです。弾丸は常に同じ場所で初期化されます。ここに私が問題を引き起こしていると信じているコードセグメントがあります。私は研究を通じて集められたものからマウスイベントの問題を悪化させる
public void mousePressed(MouseEvent e)
{
handler.addObject(new Bullet("res\\Fireball.png",x,y + ,ID.BasicEnemy,handler));
}
public void mouseReleased(MouseEvent e)
{
}
public void tick()
{
x+=velX;
y+=velY;
x = Game.clamp(x,0,Game.WIDTH-40);
y = Game.clamp(y,0,Game.HEIGHT-40);
collision();
}
マウスイベントが私のダニとは異なるスレッドであるため、のmousePressedでxとy()メソッドが更新されていない理由はあります。私はJavaプログラミングプログラミングに少し慣れていて、私に明白な提案を与えることができる人がいるかどうか疑問に思っていました。私のゲームの実際のコードは非常に長いので、私は上記のコードに絞り込みました(私は、予約語と揮発性変数を同期しようとしましたが、間違って実装している可能性があります)。
そして、 、私がこれを行う場合、弾丸オブジェクトは決して現れません!ここで
public void mousePressed(MouseEvent e)
{
press=true;
}
public void mouseReleased(MouseEvent e)
{
press=false;
}
public void tick()
{
x+=velX;
y+=velY;
x = Game.clamp(x,0,Game.WIDTH-40);
y = Game.clamp(y,0,Game.HEIGHT-40);
collision();
if (press)
handler.addObject(new Bullet("res\\Fireball.png",(int)x,(int)y ,ID.BasicEnemy,handler));
}
"マウスイベントの問題を悪化させる" "あなたの質問のタイトルは、あなたの実際のコード問題の要約であり、暴言やkvetchではありません。 –
問題が発生する可能性があります。マウスイベントオブジェクト 'e'を' mousePressed(MouseEvent e) 'メソッド本体で使用することはありません。このオブジェクトはクリックの位置を保持していますが、私はあなたがそれを無視したいとは思いません。 –
あなたは2つの弾丸を作成していますが、 'tick 'はあなたの' tick'がどのように呼び出されたかに応じて 'press'状態を見ていない可能性があります – MadProgrammer