为了账号安全,请及时绑定邮箱和手机立即绑定

如果我随后移动鼠标,则在鼠标单击后触发移动的对象停止移动

如果我随后移动鼠标,则在鼠标单击后触发移动的对象停止移动

婷婷同学_ 2022-09-22 15:56:40
制作一个简单的游戏,我点击屏幕,火箭由于点击而从左向右移动。当我单击时,它从鼠标Y获得其y位置,并具有初始化的x,该x在单击后开始更改。问题是简单地移动鼠标,而对象正在移动,导致它停止,另一个问题是按住鼠标左键使y与moeY不断变化,我不想要。再次单击会使对象从其离开的 x 位置移动,并跳转到新的 mouseY。我希望在第一次单击后设置 Y。我将如何解决这些问题?提前感谢任何帮助。我真的不知道该尝试什么,因为我不知道是什么原因导致它停止移动。火箭级class Rocket{   int x = -100;  int y;  void render()  {    fill(153,153,153);    rect(x,y,40,10);  //rocket body      fill(255,0,0);    triangle(x+60,y+5,x+40,y-5,x+40,y+15);  //rocket head    triangle(x+10,y+10,x,y+15,x,y+10);  //bottom fin    triangle(x+10,y,x,y,x,y-5);  //top fin    fill(226,56,34);    stroke(226,56,34);    triangle(x-40,y+5,x,y,x,y+10);  //fire    fill(226,120,34);    stroke(226,120,34);    triangle(x-20,y+5,x,y,x,y+10);  //fire  }   void mouseClicked()  {    if (mouseButton == LEFT)    {      y = mouseY;      this.x = x+5;    }  }  void update()  {    render();    mouseClicked();  }}主图ArrayList<Alien> aliens = new ArrayList<Alien>();Rocket rocket;void setup(){  size(1200,900);  for (int i = 0; i < 5; i++)  {    aliens.add(new Alien());  }  rocket = new Rocket();}void draw(){  background(0);  moon();   for (int i = aliens.size()-1; i >= 0; i--)  {    aliens.get(i).update();    if (aliens.get(i).CheckHit())    {      aliens.remove(i);    }  }   rocket.update();}
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

添加一个声明火箭启动时间的属性,并向类中添加一个更改 y 坐标并启动火箭的方法:Rocket


class Rocket

{

    boolean started = false;


    // [...]



    void setY(int newY) {

        this.y = newY;

        started = true;

    }


    void mouseClicked() {


        if (started) {

            this.x = x+5;

        }

    }

实现鼠标按下,它在对象上设置 y 坐标:rocket


void mousePressed() {


    if (mouseButton == LEFT) {4

        rocket.setY(mouseY);  

    }

}   

请注意,该事件仅在按下鼠标按钮时发生一次。


查看完整回答
反对 回复 2022-09-22
  • 1 回答
  • 0 关注
  • 52 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信