Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用鼠标在两点之间移动_Java_Multithreading_Applet - Fatal编程技术网

Java 使用鼠标在两点之间移动

Java 使用鼠标在两点之间移动,java,multithreading,applet,Java,Multithreading,Applet,我试图在对象保持动画的同时,通过单击鼠标移动对象。在这个网站上有一些类似的帖子,我的代码基于这个答案: 但是我想用一个线程来保持对象的动画效果。我该怎么做?这是我的密码: public void movePlayer(Graphics g, int finalX, int finalY) { int length = finalX - xpos; int height = finalY - ypos; int oldXpos = xpos; int oldYp

我试图在对象保持动画的同时,通过单击鼠标移动对象。在这个网站上有一些类似的帖子,我的代码基于这个答案:

但是我想用一个线程来保持对象的动画效果。我该怎么做?这是我的密码:

public void movePlayer(Graphics g, int finalX, int finalY)
{
    int length = finalX - xpos;
    int height = finalY - ypos;

    int oldXpos = xpos;
    int oldYpos = ypos;

    double speed = 20;
    double distanceX = (length)/speed;
    double distanceY = (height)/speed;

    double distance = (Math.hypot(length,height));
    double distanceTraveled = 0;

    //This currently doesn't work:
    move = new Thread(this);
    {
        while (distanceTraveled<distance)
        {
            //move the object by increments
            xpos += distanceX;
            ypos += distanceY;
            distanceTraveled = Math.hypot(xpos-oldXpos, ypos - oldYpos);
            drawPlayer(img, g);
            for(int x = 0; x < 100000; x ++);

        }
    }
}
public void movePlayer(图形g,int finalX,int finalY)
{
int length=finalX-xpos;
int高度=最终-ypos;
int oldXpos=xpos;
int oldYpos=ypos;
双速=20;
双距离X=(长度)/速度;
双距离=(高度)/速度;
双距离=(数学形法(长度、高度));
双距离=0;
//这目前不起作用:
移动=新线程(此);
{

while(distance)traveled如果这是Swing,为什么不简单地使用MouseListener来帮助你拖动对象?如果你想独立于鼠标设置动画,除非你想冻结事件线程,否则不要使用while(true)
循环。改用Swing计时器。如果这不是Swing,请告诉我们更多细节(拍摄,无论如何都要这样做)!

如果这是Swing,为什么不简单地使用MouseListener来帮助你拖动对象呢?如果你想独立于鼠标设置动画,除非你想冻结事件线程,否则不要使用
while(true)
循环。改用Swing计时器。如果这不是Swing,请告诉我们更多细节(拍摄,无论如何都要这样做)!

您的问题似乎缺少必要的细节,例如“保持对象动画化”的含义,这是秋千吗?AWT?还有别的吗?请告诉我们我们需要知道的一切,以便能够告诉你。我使用的是JApplet。我希望看到对象在两点之间无缝移动。我将使用动画精灵,但现在,我只使用一张图片。你的问题似乎缺少必要的细节,例如什么你的意思是“保持对象动画化”,这是秋千吗?AWT?还有别的吗?请告诉我们我们需要知道的一切,以便能够告诉你。我使用的是JApplet。我希望看到对象在两点之间无缝移动。我将使用一个动画精灵,但现在,我只使用一张图片。对于这个类,我使用的是AWT。但是对于我的小程序,我使用的是使用JApplet。谢谢,我让它与swing计时器一起工作。我会发布我的代码,但我显然需要7小时。@user1264811:我很高兴您能让它与swing计时器一起工作。另外,我建议您不要将AWT与swing组件混合使用。只使用swing。对于这个类,我使用AWT。但是对于我的小程序,我使用AWTg a JApplet。谢谢,我用swing定时器完成了它。我会发布我的代码,但我显然需要7小时。@user1264811:我很高兴你用swing定时器完成了它。另外,我建议你不要将AWT和swing组件混在一起。只使用swing。