Tag: affinetransform

用AffineTransform旋转图像

我有class级叫Airplane 。 在这个类里面我有variablesimg这是一个BufferedImagetypes。 更重要的是,我得到了类WorldMap ,它覆盖了函数paintComponent(Graphics g) : @Override public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.drawImage(mapa, 0, 0, getWidth(), getHeight(), null); drawAirplanes(g2d); } 函数drawAirplanes()看起来像这样: private void drawAirplane(Graphics2D g){ for(Samolot i: s){ i.rotateAirplane(); g.drawImage(i.getImg(),i.getX(),i.getY(),(int)i.getDim().getWidth(),(int)i.getDim().getHeight(), null); } } 它只需要1)旋转飞机(BufferedImage里面的飞机对象)2)吸引他。 我的Airplane.rotateAirplane()函数如下所示: public void rotateSamolot() { AffineTransform tx = new AffineTransform(); tx.translate(10,10); //10, 10 is height […]

移动对象和计时器

我有一个屏幕,说500宽度和400高度,我有一个形状束vector。 比方说,vector有两种不同的形状。 我希望物体从屏幕底部随机popup,达到一定的上升,然后再下降(类似于游戏水果忍者,水果是我的形状)。 在我的主要(视图)我有一个形状的向量我实例化计时器,添加到数组,并使用翻译function将它们放置在屏幕的button。 我的计时器需要一个动作监听器,它基本上改变了形状的平移,直到上升然后下降,但是我的问题是所有的形状都是同时开始的。 像这样的东西: Shape f = new Shape(new Area(new Ellipse2D.Double(0, 50, 50, 50))); f.translate(0, 400); f.timer = new Timer( 10 , taskPerformer); f.timer.start(); vector.add(f); Shape f2 = new Shape(new Area(new Rectangle2D.Double(0, 50, 50, 50))); f2.translate(200, 400); f2.timer = new Timer( 10 , taskPerformer); f2.timer.setInitialDelay(5000); f2.timer.start(); vector.add(f2); 和我的行动听众: Random generator = new Random(); […]