java动画代码(求一个java画圆代码 画随机的圆 设计要求: 编一个Applet,实现简单的动画具体要求:自动出现由小到大变)

本文目录
- 求一个java画圆代码 画随机的圆 设计要求: 编一个Applet,实现简单的动画具体要求:自动出现由小到大变
- 我想要个用java写的小动画,是在JDK上实现的,可以帮我写下吗
- java 简单动画 就是将一个圆点从一个坐标移动到另一个坐标即可
- 怎么用java做动画
- 在java中怎样实现动画效果
- 求一个Java动画,一个小球在屏幕上碰到边缘就反弹无限循环
- JAVA 简单的2D动画(一条直线围绕一个圆点转动)
- Java编程实现一个能循环地自左向右移动的动画程序
- 请教用java制作动画的教程
求一个java画圆代码 画随机的圆 设计要求: 编一个Applet,实现简单的动画具体要求:自动出现由小到大变
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
public class zhang extends Applet {
int x,y; //圆的位置
int W_H; //圆的大小
int R,G,B; //圆的颜色
Random rd = new Random();
public void init(){
this.resize(400, 300);
}
public void paint(Graphics g){
while ( true ){
W_H = rd.nextInt(100);
x = rd.nextInt(this.getWidth());
y = rd.nextInt(this.getHeight());
R = rd.nextInt(255);
G = rd.nextInt(255);
B = rd.nextInt(255);
g.setColor(Color.white);
g.fillRect(0,0,this.getWidth(),this.getHeight());
Color color = new Color(R,G,B);
g.setColor(color);
g.fillArc(x,y,W_H,W_H,0,360);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
我想要个用java写的小动画,是在JDK上实现的,可以帮我写下吗
/*显示一个立方体*/
#include 《dos.h》
#include 《math.h》
#include 《conio.h》
#include 《stdio.h》
#include 《stdlib.h》
#include 《graphics.h》
#define PI 3.1415926
/*定义按键*/
#define ESC 0x11b
/*以下4个键,依次是上 下 左 右*/
#define X_axis_clkwise 0x4800
#define X_axis_Cntclkwise 0x5000
#define Y_axis_clkwise 0x4b00
#define Y_axis_Cntclkwise 0x4d00
/*以下2个键,依次是A, D*/
#define Z_axis_clkwise 0x1e61
#define Z_axis_Cntclkwise 0x2064
#define Distance_forward 0x1177
#define Distance_Backward 0x1f73
/*以下6个键,依次是U, J, I, K, O, L*/
#define X_Delta_Plus 0x1675
#define X_Delta_Minus 0x246a
#define Y_Delta_Plus 0x1769
#define Y_Delta_Minus 0x256b
#define Z_Delta_Plus 0x186f
#define Z_Delta_Minus 0x266c
/*绕X轴旋转矩阵*/
float X_Rotate_Matrix = { 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 };
/*绕Y轴旋转矩阵*/
float Y_Rotate_Matrix = { 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 };
/*绕Z轴旋转矩阵*/
float Z_Rotate_Matrix = { 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 };
/*平移矩阵*/
float Transist_Matrix = { 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 };
/*透视投影变换矩阵*/
float Perspective_Projection = { 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 1 };
int num;
float *Matrix_Mul(float *pMatrix1, int Num_Row_Matrix1, int Num_Column_Matrix1,
float *pMatrix2, int Num_Row_Matrix2, int Num_Column_Matrix2 ) {
/*实现两个矩阵:
输入参数: *pMatrix1: 指向第一个矩阵
Num_Row_Matrix1: 第一个矩阵的行数
Num_Column_Matrix1: 第一个矩阵的列数
余下三个参数类推;
return 指向运算结果的float类型指针.*/
int i, j, m, n;
float *pNewMatrix1, *pNewMatrix2, Sum;
if( Num_Column_Matrix1 != Num_Row_Matrix2) {
printf("Invalid Matrixs!\n");
return 0;
}
pNewMatrix1 = malloc(Num_Row_Matrix1 * Num_Column_Matrix2 * 4);
/*申请内存空间, Size(/bytes) = 第一个矩阵的行数 * 第二个矩阵的列数 * 4(= sizeof(float))*/
pNewMatrix2 = pNewMatrix1;
/*具体算法详见如下代码*/
for( i = 0; i 《 Num_Row_Matrix1; i++) {
for( n = 0; n 《 Num_Column_Matrix2; n++) {
Sum = 0;
for( j = 0; j 《 Num_Column_Matrix1; j++)
Sum += (*(pMatrix1+i*Num_Column_Matrix1+j)) * (*(pMatrix2+j*Num_Column_Matrix2+n));
*(pNewMatrix1++) = Sum;
}
}
return pNewMatrix2;
}
/*转换成齐次坐标矩阵*/
void Matrix_Convertion(float *pMatrix, int Num_Row) {
int i, j;
for(i = 0; i 《 Num_Row; i++) {
if((*(pMatrix+i*4+3)) != 0) {
*(pMatrix+i*4) = (*(pMatrix+i*4)) / (*(pMatrix+i*4+3));
*(pMatrix+i*4+1) = (*(pMatrix+i*4+1)) / (*(pMatrix+i*4+3));
*(pMatrix+i*4+2) = (*(pMatrix+i*4+2)) / (*(pMatrix+i*4+3));
}
}
}
/*取得投影坐标*/
float *Get_X_Y(float *pMatrix, int Num_Row) {
int i, j, Num;
float *pNewMatrix;
Num = 0;
for(i = 0; i 《 Num_Row; i++) {
if((*(pMatrix+i*4+3)) != 0)
Num++;
}
pNewMatrix = malloc(Num * 2 * 4);
/*存放格式,{(x1, y1),(x2, y2), ... ,(xn, yn)}*/
for(i = 0; i 《 Num; i++) {
if((*(pMatrix+i*4+3)) != 0) {
*(pNewMatrix+i*2) = (*(pMatrix+i*4))+300; /*显示在屏幕中心, x = 300*/
*(pNewMatrix+i*2+1) = (*(pMatrix+i*4+1))+200; /*显示在屏幕中心, y = 200*/
}
}
return pNewMatrix;
}
/*设置旋转矩阵, Rotate around aixs labled with X or Y or Z*/
void SetMatrix_X(float X_Angle) {
float CosX, SinX;
SinX = sin(X_Angle * PI /128);
CosX = cos(X_Angle * PI /128);
X_Rotate_Matrix = CosX;
X_Rotate_Matrix = SinX;
X_Rotate_Matrix = -1 * SinX;
X_Rotate_Matrix = CosX;
}
void SetMatrix_Y(float Y_Angle) {
float CosY, SinY;
SinY = sin(Y_Angle * PI /128);
CosY = cos(Y_Angle * PI /128);
Y_Rotate_Matrix = CosY;
Y_Rotate_Matrix = -1 * SinY;
Y_Rotate_Matrix = SinY;
Y_Rotate_Matrix = CosY;
}
void SetMatrix_Z(float Z_Angle) {
float CosZ, SinZ;
SinZ = sin(Z_Angle * PI /128);
CosZ = cos(Z_Angle * PI /128);
Z_Rotate_Matrix = CosZ;
Z_Rotate_Matrix = SinZ;
Z_Rotate_Matrix = -1 * SinZ;
Z_Rotate_Matrix = CosZ;
}
/*类同*/
void Set_Transist_Matrix(float X, float Y,float Z) {
Transist_Matrix = X;
Transist_Matrix = Y;
Transist_Matrix = Z;
}
/*类同*/
void Set_Perspective_Projection(float k) {
Perspective_Projection = -1/k;
}
/*初始化图形驱动*/
void InitGraph(void) {
int gd=DETECT,gm;
initgraph(&gd,&gm,"E:\\TC");
}
/*生成立方体*/
float *Cube(void) {
int i, j, k;
float *pPoints1, *pPoints2;
num = 0;
for( i = -50; i 《= 50; i += 20)
for( j = -50; j 《= 50; j += 20)
for( k = -50; k 《= 50; k += 20)
num++;
pPoints1 = malloc( num * 4 * 4 );
pPoints2 = pPoints1;
for( i = -50; i 《= 50; i += 20)
for( j = -50; j 《= 50; j += 20)
for( k = -50; k 《= 50; k += 20) {
*(pPoints1++) = i;
*(pPoints1++) = j;
*(pPoints1++) = k;
*(pPoints1++) = 1;
}
return pPoints2;
}
/*Functions used for drawing & Clearing*/
void Plot_NewPoints(float *pPoints) {
int i;
for(i=0;i《num;i++)
putpixel( (int) (*(pPoints+i*2)), (int) (*(pPoints+i*2+1)), 7);
}
void Clear_OldPoints(float *pPoints) {
int i;
for(i=0;i《num;i++)
putpixel( (int) (*(pPoints+i*2)), (int) (*(pPoints+i*2+1)), 0);
}
/*Function used for controlling*/
void Operate(int Switch, float *Ang_Rot_X, float *Ang_Rot_Y, float *Ang_Rot_Z,
float *X_Delta, float *Y_Delta, float *Z_Delta,float *Distance) {
switch(Switch) {
case X_axis_clkwise: (*Ang_Rot_X)--; break;
case X_axis_Cntclkwise: (*Ang_Rot_X)++; break;
case Y_axis_clkwise: (*Ang_Rot_Y)--; break;
case Y_axis_Cntclkwise: (*Ang_Rot_Y)++; break;
case Z_axis_clkwise: (*Ang_Rot_Z)--; break;
case Z_axis_Cntclkwise: (*Ang_Rot_Z)++; break;
case X_Delta_Plus: (*X_Delta)--; break;
case X_Delta_Minus: (*X_Delta)++; break;
case Y_Delta_Plus: (*Y_Delta)--; break;
case Y_Delta_Minus: (*Y_Delta)++; break;
case Z_Delta_Plus: (*Z_Delta)++; break;
case Z_Delta_Minus: (*Z_Delta)--; break;
case Distance_forward: (*Distance)++; break;
case Distance_Backward: (*Distance)--; break;
default: (*Ang_Rot_Y)++; break;
}
}
int main() {
int i, j, Key;
float *pMatrix1, *pMatrix2;
float *pBasePoints;
float *pPerspectivePoints;
float Ang_Rot_Xaxis, Ang_Rot_Yaxis, Ang_Rot_Zaxis;
float X_Delta, Y_Delta, Z_Delta;
float Distance;
clrscr();
InitGraph();
/*Varieties initialized*/
pBasePoints = Cube();
Ang_Rot_Xaxis = 0;
Ang_Rot_Yaxis = 0;
Ang_Rot_Zaxis = 0;
X_Delta = 0;
Y_Delta = 0;
Z_Delta = 0;
Distance = 200;
Key = 0;
while(Key != ESC) {
if( bioskey(1) )
Key = bioskey(0);
Operate(Key, &Ang_Rot_Xaxis, &Ang_Rot_Yaxis, &Ang_Rot_Zaxis,
&X_Delta, &Y_Delta, &Z_Delta, &Distance);
SetMatrix_X(Ang_Rot_Xaxis);
SetMatrix_Y(Ang_Rot_Yaxis);
SetMatrix_Z(Ang_Rot_Zaxis);
Set_Transist_Matrix(X_Delta, Y_Delta, Z_Delta);
Set_Perspective_Projection(Distance);
/*The following may be known by you
pay your attention specially to the pair of malloc & free */
pMatrix1 = Matrix_Mul( (float*)X_Rotate_Matrix, 4, 4, (float*)Y_Rotate_Matrix, 4, 4);
pMatrix2 = Matrix_Mul( pMatrix1, 4, 4, (float*)Z_Rotate_Matrix, 4, 4);
free(pMatrix1);
pMatrix1 = Matrix_Mul( pMatrix2, 4, 4, (float*)Transist_Matrix, 4, 4);
free(pMatrix2);
pMatrix2 = Matrix_Mul( pMatrix1, 4, 4, (float*)Perspective_Projection, 4, 4);
free(pMatrix1);
pMatrix1 = Matrix_Mul( pBasePoints, num, 4, pMatrix2, 4, 4);
free(pMatrix2);
Matrix_Convertion( pMatrix1, num);
pPerspectivePoints = Get_X_Y(pMatrix1, num);
Plot_NewPoints(pPerspectivePoints);
delay(5000);
Clear_OldPoints(pPerspectivePoints);
free(pPerspectivePoints);
free(pMatrix1);
}
free(pBasePoints);
closegraph();
return 0;
}
java 简单动画 就是将一个圆点从一个坐标移动到另一个坐标即可
一个简单的范例,不明白追问吧
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class MoveAnimationDemo extends JFrame {
public MoveAnimationDemo() {
this.setContentPane(new AnimationPanel());
this.setSize(500, 500);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/**
* 开始动画
*/
public void startAnimation() {
// 设定初始条件
x = START_X;
y = START_Y;
// 创建计时器
timer = new Timer(DELAY_TIME, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 每一次延迟过后,调用一次
x += 1;
y += 1;
repaint();
// 满足结束条件就停止
if (x 》= END_X || y 》= END_Y) {
timer.stop();
}
}
});
// 开启计时器
timer.start();
}
public static void main(String args) {
MoveAnimationDemo demo = new MoveAnimationDemo();
demo.setVisible(true);
demo.startAnimation();
}
private class AnimationPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(CIRCLE_COLOR);
g.fillOval(x, y, CIRCLE_SIZE, CIRCLE_SIZE);
}
}
// 圆点颜色
private static final Color CIRCLE_COLOR = Color.RED;
// 圆点大小
private static final int CIRCLE_SIZE = 10;
// 起始位置
private static final int START_X = 50;
private static final int START_Y = 50;
// 终止位置
private static final int END_X = 400;
private static final int END_Y = 400;
// 动画帧之间的延时,每秒60帧
private static final int DELAY_TIME = 1000 / 60;
// 当前位置
private int x;
private int y;
private Timer timer;
}
怎么用java做动画
重写paint方法,来实现将自己定义的图片绘制到组件中,然后启动一个线程来控制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文件放在同一文件夹下,然后运行就可以了·~~
在java中怎样实现动画效果
Java本身是不具备GIF图片的处理能力的,你可以在读取GIF文件后,读出加载每一个帧,然后一个帧一个帧的绘制出来
求一个Java动画,一个小球在屏幕上碰到边缘就反弹无限循环
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
public class Demo {
public static void main(String args) {
Frame w = new Frame();
w.setSize(300, 400);
CPanel mp = new CPanel();
w.add(mp);
w.setVisible(true);
Thread t = new Thread(mp);
t.start();
}
}
class CPanel extends Panel implements Runnable {
private static final long serialVersionUID = 3474337559197220434L;
int x = 30;
int y = 30;
boolean down = true;
public void paint(Graphics g) {
g.fillOval(x, y, 20, 20);
}
public void run() {
try {
while (true) {
if (down) {
y++;
if (y 》= 340) {
down = false;
}
} else {
y--;
if (y 《= 20) {
down = true;
}
}
repaint();
Thread.sleep(1);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
JAVA 简单的2D动画(一条直线围绕一个圆点转动)
要建两个类 别全部复制到一个文件内了
一个是直线类
public class Tline implements Runnable{
private int x=0;
private int y=0;
private int r=100;
@Override
public void run(){
int angle=0;
while(true){
x = (int) (Math.cos((angle*2)*Math.PI/360)*r); //确定X Y值
y = (int) (Math.sin((angle*2)*Math.PI/360)*r);
angle++;
try {
Thread.sleep(250);
} catch (InterruptedException ex) {
Logger.getLogger(Tline.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void draw(Graphics g){
g.drawLine(0, 0, x, y);
}
}
第二个是窗口类
public class TestJFrame extends JFrame{
Tline line;
public TestJFrame(){
init();
line = new Tline();
new Thread(line).start();
todraw();
}
public void todraw(){
while(true){
this.repaint();
try {
Thread.sleep(250);
} catch (InterruptedException ex) {
Logger.getLogger(TestJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void init(){
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
this.setSize(800, 600);
this.setVisible(true);
}
@Override
public void paint(Graphics g){
super.paint(g);
g.translate(200, 200); //平移
line.draw(g);
}
public static void main(String args){
new TestJFrame();
}
}
在netbeans 和eclipse中都通过了
Java编程实现一个能循环地自左向右移动的动画程序
效果图
参考代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MoveTextFrame extends JFrame {
JLabel jl;//文字标签
int speed=2;//移动速度
public MoveTextFrame() {
jl = new JLabel("文字动画");
jl.setForeground(Color.RED);
add(jl);
setSize(380, 100);//窗口大小
setLocationRelativeTo(null);//窗口居中
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//设置定时器, 每隔25毫秒,改变一次文字标签的位置
Timer t = new Timer(25, new ActionListener() {
public void actionPerformed(ActionEvent e) {
int x = jl.getX()+speed;//计算移动后的位置
if(x》=390){//如果超过就指定像素,就重新从左边开水移动
x=-30;
}
jl.setLocation(x, jl.getY());//更新位置
//repaint();
}
});
t.start();
}
public static void main(String args) {
new MoveTextFrame();
}
}
请教用java制作动画的教程
//才几分啊,还有那么多要求?不干了!
//RobotTest.java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
public class RobotTest extends JPanel implements Runnable{
JLabel head,neck,body;
boolean sw;
RobotTest(){
super(null);
head=new JLabel("HEAD"){
protected void paintBorder(Graphics g) {
g.setColor(Color.black);
g.drawOval(0, 0, getSize().width-1,
getSize().height-1);
}
};
neck=new JLabel("《html》N《br》E《br》C《br》K");
body=new JLabel("BODY");
head.setHorizontalAlignment(JLabel.CENTER);
neck.setHorizontalAlignment(JLabel.CENTER);
body.setHorizontalAlignment(JLabel.CENTER);
head.setSize(60,60);
neck.setSize(20,20);
body.setSize(100,128);
neck.setBorder(BorderFactory.createLineBorder(Color.black));
body.setBorder(neck.getBorder());
body.setLocation(0,158);
neck.setLocation(40,0);
head.setLocation(20,0);
add(head);
add(neck);
add(body);
}
public void run(){
int i=0;
while(i《1000){
setLocation(i+=5,0);
neck.setSize(20,(sw=!sw)?60:80);
neck.setLocation(neck.getX(),body.getY()-neck.getHeight());
head.setLocation(head.getX(),neck.getY()-head.getHeight());
try {
Thread.sleep(333);
} catch (Exception e) {}
}
}
public static void main(String args) {
RobotTest rt = new RobotTest();
rt.setSize(100,300);
new Thread(rt).start();
JFrame f= new JFrame();
f.getContentPane().setLayout(null);
f.getContentPane().add(rt);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(600,330);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}

更多文章:
linux显示最近执行的命令(如何查看linux服务器运行状态)
2026年4月16日 06:15
scum2022作弊码大全(人渣武器代码是什么 人渣武器代码介绍)
2026年7月24日 14:45
横向多条件求和(怎样在Excel 中 编写横向 多条件求和公,至少同时满足2个条件,再对指定的行区域进行求和)
2026年5月16日 11:45
carrytakebring的区别(bring, take, carry的区别是什么)
2026年1月25日 23:30
static局部变量和全局变量(请用自己的话解释全局变量与局部变量的区别,静态变量与自动变量的区别)
2025年7月24日 21:00
在线随机数生成器在哪找到的(1~33选6个数组合找什么软件)
2026年2月1日 14:45
phparray可以遍历数组吗(PHP 遍历多维数组,获取指定的值)
2026年8月16日 22:00
21探戈中控显示屏出现update(如何升级车载中控显示器)
2026年8月26日 02:45
使用多线程打开文件什么意思(怎么理解多线程,为什么要用多线程)
2026年2月3日 02:00
java string属于什么类型(java string是什么类型)
2025年12月2日 20:15
js的removechild(js,html5,css3.求js里面的remove()方法如何使用)
2025年6月19日 14:45











