本帖最后由 lidawn 于 2013-01-30 10:33:36 编辑

解决方案 »

  1.   

    是用Swing做的吗,如果是建议用Timer这么个类,不用创建线程。
      

  2.   


    嗯  这是电脑tank 因为是自动的而且不止一辆  所以做成了线程
      

  3.   

    是否添加个变量 比如 i=0 每次坦克转一次 就说明过去1s 则i++ 如果 i%4==0则fire
      

  4.   

    取决于你的整个游戏架构。如果你禁用了 Swing 自身的重绘机制,自己另外实现了单线程队列的 FPS(Frame Per Sedond) 机制,那你可以精确控制每一帧做什么,设计一个“毫秒表”的类,检测1000ms和4000ms就行了。如果你用了 Swing 自带的机制,那就用 javax.swing.Timer,你可以用单独的 Timer 来专门控制变向和开火,但是更好的机制大概是整个游戏只用一个 Timer,虽然不是严格的 FPS 但是跟FPS类似,Timer 以很高的频率执行两个方法:- update model
    - repaint view其中 update model 的时候可以去检查所有坦克的“毫秒表”距上次转向/开火过了多少时间,是不是应该转向/开火了。网上很多视频教程里教的用 Swing 做游戏是错的,很多用了 Thread/Runnable,然后在后台线程里直接更改model里的数据,至少是线程不安全。做这种游戏,几乎可以说你用了多线程就已经错了。
      

  5.   

    我以前在Swing做动画就是用这个javax.swing.Timer这个类的,很好用的,而且容易控制。
      

  6.   


    而且保证了线程安全,符合EDT规范。使用正确的API工具的好处还有: API的提供者会尽可能保证它的时间精度,不用你自己操心。
      

  7.   

    高手能给我解决一个图片抗锯齿的问题吗?
    我的问题的是这样的,在JPanel上画一张图片,然后旋转图片,发现旋转到一定角度之后,图片的四边有锯齿 , 怎么解决?网上说的g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);这个方法不行效果不明显。好像只能处理文本的锯齿
      

  8.   


    你刚刚贴问题我就看到了
    因为自己没搞过图片旋转所以回答不了……http://www.jhlabs.com/ip/filters/
    你可以试试这里面的 RotateFilter