需要帮助在 JAVA 中跟踪球的位置

Posted

技术标签:

【中文标题】需要帮助在 JAVA 中跟踪球的位置【英文标题】:Need help to track ball position in JAVA 【发布时间】:2020-07-18 10:29:34 【问题描述】:

我正在使用 J2ME Loader 在 Netbeans 中创建一个弹跳球。

我已经完成了弹跳球的部分,但很难跟踪球的位置。

我在网上搜索过,但那里没有太多信息。谁能给点建议?

代码如下:

package mobileapplication8;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.*;


public class Midlet extends MIDlet 
    Display d;
        MyCanvas m;
     Timer t;
    MyTask mt;
    int x=10,y=10;
    int xiner=1,yiner=1;
    Command start, stop;
     Command c;


    public void startApp() 
          d=Display.getDisplay(this);
       m= new MyCanvas();
       d.setCurrent(m);

    

    class MyTask extends TimerTask
    
        public void run()
        
            m.repaint();
           
        
    
    class MyCanvas  extends Canvas implements CommandListener
      
    
        MyCanvas()
         start=new Command("start", Command.SCREEN,1);
        addCommand(start);
   stop=new Command("stop", Command.SCREEN,2);
        addCommand(stop);
       setCommandListener(this);
     public void  paint(Graphics g)
          g.setColor(255,255,255);
              g.fillRect(0,0,getWidth(),getHeight());
              g.setColor(255,0,0);
                  
              x+=20*xiner;
              y+=50*yiner;
              if(x>getWidth()-20 || x<0 )
               xiner*=-1;
                  
              if(y>getHeight()-50||y<0)
              yiner*=-1;
             
              
            g.fillArc(x,y, 20,20,0,360);
       
    
        public void commandAction(Command c, Displayable d) 
          //  throw new UnsupportedOperationException("Not supported yet.");
      if(c==start)
     
      t=new Timer();
      mt=new MyTask();
      t.schedule(mt,1000,500);
           
     else if(c==stop)
     
          t.cancel();
          mt.cancel();
        
    
   
    public void pauseApp() 
    
   
    public void destroyApp(boolean unconditional) 
    


如您所见,输出仅显示球弹跳,如下图所示

这是我想要的输出,即每次移动时获取球的位置,但未能实现,见下图

【问题讨论】:

【参考方案1】:

在paint方法中添加以下代码

String s = "(" + x + "," + y + ")";
g.drawString(s, 0, 0, Graphics.TOP | Graphics.LEFT);

https://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/javax/microedition/lcdui/Graphics.html#drawString(java.lang.String,%20int,%20int,%20int)

【讨论】:

以上是关于需要帮助在 JAVA 中跟踪球的位置的主要内容,如果未能解决你的问题,请参考以下文章

球的序列(formation.*)

多个球的 Haar 级联跟踪

球的序列

跟踪 Android 设备的位置 [关闭]

使用基于位置的应用程序跟踪用户

在java中跟踪鼠标移动