java實現(xiàn)動畫的代碼 java實現(xiàn)動畫的代碼有哪些

2.Java有哪幾種常見的實現(xiàn)動畫的方法?

一: 用多線程播放一組圖片, 實現(xiàn)動畫片的效果; 類似于逐幀動畫,每個圖片是動畫的一幀

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網(wǎng)站空間、營銷軟件、網(wǎng)站建設、沈丘網(wǎng)站維護、網(wǎng)站推廣。

二: 在awt/swing界面里, 可以使用paint方法,去繪制圖形,然后用swing提供的Timer或者多線程技術,去刷新繪制的圖形

三:在JavaFX里, 本身就支持動畫,并且封裝了很多動畫效果可以直接使用,比如逐幀動畫.縮放動畫,漸變動畫,旋轉動畫,位置動畫等.

強烈推薦使用javaFX來實現(xiàn)動畫, 因為javaFX是現(xiàn)代化的圖形界面工具,具有簡單,強大,組件豐富,跨平臺,支持Html5, 支持表格, 支持動畫等多種優(yōu)勢?

下面是一個javaFX繪制的動態(tài)表格

javaFX動態(tài)表格

求java做動畫代碼

import?java.awt.Canvas;

import?java.awt.Color;

import?java.awt.Dimension;

import?java.awt.EventQueue;

import?java.awt.Frame;

import?java.awt.Graphics;

import?java.awt.Graphics2D;

import?java.awt.Image;

import?java.awt.RenderingHints;

import?java.awt.event.KeyEvent;

import?java.awt.event.KeyListener;

import?java.awt.event.WindowAdapter;

import?java.awt.event.WindowEvent;

import?java.awt.image.BufferedImage;

import?java.io.File;

import?java.io.IOException;

import?javax.imageio.ImageIO;

public?class?TestImage?extends?Frame

{

private?static?final?long?serialVersionUID?=?1L;

private?static?boolean?PRESSED?=?false;

private?static?int?pointX?=?0;

private?static?int?pointy?=?200;

private?static?int?RIGHT_GO?=?0;

private?static?int?LEFT_GO?=?0;

private?static?int?DIR?=?0;

private?static?int?ANGLE?=?0;

private?static?int?W?=?50;

private?static?int?H?=?60;

private?_Canvas?canvas?=?null;

public?TestImage?()

{

add?(canvas?=?new?_Canvas?());

setIgnoreRepaint?(true);

requestFocus?();

}

public?class?_Canvas?extends?Canvas?implements?Runnable

{

private?static?final?long?serialVersionUID?=?1L;

private?BufferedImage?bi?=?null;

private?Image?bufferedImage?=?null;

private?Thread?thread?=?null;

private?long?sleepTime?=?10;

public?_Canvas?()

{

try

{

bi?=?ImageIO.read?(new?File?("go.png"));

}

catch?(IOException?e)

{}

setBackground?(Color.BLACK);

requestFocus?();

addKeyListener?(new?KeyListener?()

{

@Override

public?void?keyTyped?(?KeyEvent?e?)

{}

@Override

public?void?keyReleased?(?KeyEvent?e?)

{

RIGHT_GO?=?0;

PRESSED?=?false;

}

@Override

public?void?keyPressed?(?KeyEvent?e?)

{

//?38?40?37?39上下左右

DIR?=?e.getKeyCode?();

PRESSED?=?true;

}

});

}

@Override

public?void?paint?(?Graphics?g?)

{

Graphics2D?g2d?=?(Graphics2D)?g;

g2d.setRenderingHint?(RenderingHints.KEY_INTERPOLATION,?RenderingHints.VALUE_INTERPOLATION_BILINEAR);

g2d.drawImage?(rotateImage?(bi.getSubimage?(RIGHT_GO,?LEFT_GO,?W,?H),?ANGLE,?true),?pointX,?pointy,?W,?H,

this);

g2d.dispose?();

}

@Override

public?void?update?(?Graphics?g?)

{

if?(null?==?bufferedImage)

{

bufferedImage?=?createImage?(getWidth?(),?getHeight?());

}

Graphics?bufferedG?=?bufferedImage.getGraphics?();

bufferedG.clearRect?(0,?0,?getWidth?(),?getHeight?());

paint?(bufferedG);

bufferedG.dispose?();

g.drawImage?(bufferedImage,?0,?0,?this);

g.dispose?();

}

public?void?start?()

{

thread?=?new?Thread?(this);

thread.setName?("TestImage");

thread.setPriority?(Thread.MIN_PRIORITY);

thread.start?();

}

public?synchronized?void?stop?()

{

thread?=?null;

notify?();

}

@Override

public?void?run?()

{

Thread?me?=?Thread.currentThread?();

while?(thread?==?me??!isShowing?()?||?getSize?().width?==?0)

{

try

{

Thread.sleep?(555);

}

catch?(InterruptedException?e)

{

return;

}

}

while?(thread?==?me??isShowing?())

{

if?(PRESSED)

{

try

{

if?(DIR?==?39)

{

RIGHT_GO?=?RIGHT_GO?+?50;

LEFT_GO?=?0;

pointX?=?pointX?+?1;

if?(pointX??420)

{

ANGLE?=?90;

pointX--;

pointy--;

W?=?60;

H?=?50;

}

if?(RIGHT_GO??50)

{

RIGHT_GO?=?0;

}

}

else?if?(DIR?==?37)

{

pointX?=?pointX?-?1;

RIGHT_GO?=?RIGHT_GO?+?50;

LEFT_GO?=?60;

if?(pointX??0)

{

ANGLE?=?-90;

pointX++;

pointy--;

W?=?60;

H?=?50;

}

if?(RIGHT_GO??50)

{

RIGHT_GO?=?0;

}

}

else?if?(DIR?==?38)

{

W?=?50;

H?=?60;

pointy?=?150;

ANGLE?=?0;

RIGHT_GO?=?100;

}

else?if?(DIR?==?40)

{

W?=?50;

H?=?60;

ANGLE?=?0;

pointy?=?200;

RIGHT_GO?=?0;

}

Thread.sleep?(sleepTime);

repaint?();

}

catch?(InterruptedException?e)

{

break;

}

}

else

{

RIGHT_GO?=?RIGHT_GO?+?50;

LEFT_GO?=?0;

pointX?=?pointX?+?1;

if?(RIGHT_GO??50)

{

RIGHT_GO?=?0;

}

if?(pointX??500)

{

pointX?=?0;

}

try

{

Thread.sleep?(sleepTime);

repaint?();

}

catch?(InterruptedException?e)

{

break;

}

}

}

thread?=?null;

}

}

/**

?*?旋轉圖像為指定角度

?*?

?*?@param?degree

?*?@return

?*/

public?static?BufferedImage?rotateImage?(?final?BufferedImage?image,?final?int?angdeg,?final?boolean?d?)

{

int?w?=?image.getWidth?();

int?h?=?image.getHeight?();

int?type?=?image.getColorModel?().getTransparency?();

BufferedImage?img;

Graphics2D?graphics2d;

(?graphics2d?=?(?img?=?new?BufferedImage?(w,?h,?type)?).createGraphics?()?).setRenderingHint?(

RenderingHints.KEY_INTERPOLATION,?RenderingHints.VALUE_INTERPOLATION_BILINEAR);

graphics2d.rotate?(d???-Math.toRadians?(angdeg)?:?Math.toRadians?(angdeg),?w?/?2,?h?/?2);

graphics2d.drawImage?(image,?0,?0,?null);

graphics2d.dispose?();

return?img;

}

public?static?void?main?(?String[]?args?)

{

EventQueue.invokeLater?(new?Runnable?()

{

@Override

public?void?run?()

{

final?TestImage?ti?=?new?TestImage?();

ti.setSize?(new?Dimension?(500,?300));

ti.setLocationRelativeTo?(null);

ti.addWindowListener?(new?WindowAdapter?()

{

@Override

public?void?windowClosing?(?WindowEvent?e?)

{

System.exit?(0);

}

@Override

public?void?windowDeiconified?(?WindowEvent?e?)

{

ti.canvas.start?();

}

@Override

public?void?windowIconified?(?WindowEvent?e?)

{

ti.canvas.stop?();

}

});

ti.setResizable?(false);

ti.canvas.start?();

ti.setVisible?(true);

}

});

}

}

怎么用java做動畫

重寫paint方法,來實現(xiàn)將自己定義的圖片繪制到組件中,然后啟動一個線程來控制paint方法。 示例: ××××××××××××××××××××××××××× import javax.swing.*; import java.awt.*;class MyPanel extends JPanel implements Runnable {private Image img;private int i=0;private int j=0;public MyPanel(){img=new ImageIcon("1.png").getImage();}public void paint(Graphics g){g.drawImage(img,0,0,60,104,i*60,j*104,i*60+60,j*104+104,this);}public void run(){while(true){while(j {while(i {try{Thread.sleep(300);}catch(Exception e){}this.repaint();i++;}j++;i=0;}i=0;j=0;}} }public class test extends JFrame {private MyPanel p;public test(){p=new MyPanel();this.add(p,BorderLayout.CENTER);this.setBounds(300,200,300,300);this.setTitle("人物行走圖");new Thread(p).start();this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String args[]){new test();} }××××××××××××××××××××××× 將以上源碼保存為:test.java,編譯,然后下載下面的圖片 將下載的圖片改名為1.png" target="_blank"

,然后將其和編譯后生成的class文件放在同一文件夾下,然后運行就可以了·~~

網(wǎng)站欄目:java實現(xiàn)動畫的代碼 java實現(xiàn)動畫的代碼有哪些
網(wǎng)站地址:http://muchs.cn/article40/doedeho.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、微信公眾號、關鍵詞優(yōu)化、網(wǎng)站策劃、標簽優(yōu)化靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設