日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

线程动画屏保小球碰撞c语言,线程小动画之屏保--模仿小球碰撞反弹(一)

發(fā)布時(shí)間:2024/8/1 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程动画屏保小球碰撞c语言,线程小动画之屏保--模仿小球碰撞反弹(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

相信大家都對(duì)屏幕保護(hù)中的小球碰撞動(dòng)畫深有印象吧,許多色彩繽紛的小球在屏幕上滾動(dòng),碰撞,然后一直重復(fù)如此過(guò)程......現(xiàn)在就讓我們自己嘗試去做一下吧,或許你做的比它的要更好呦!

不必說(shuō),最重要也是最先弄的,自然是要產(chǎn)生小球啦,因此就要先創(chuàng)建一個(gè)球的線程類。這里先放上一些關(guān)于線程創(chuàng)建的知識(shí),有助于大家鞏固記憶啦。

線程的創(chuàng)建有兩種方式,分別為繼承Thread類(已經(jīng)實(shí)現(xiàn)了Runnable接口)與實(shí)現(xiàn)Runnable接口。

1.Thread類

常用方法包括:start()、interrupt()、join()、run()方法等。start()方法用于啟動(dòng)線程,run()方法為線程實(shí)現(xiàn)功能的方法,可以根據(jù)需求覆寫run()方法。

構(gòu)造函數(shù)8個(gè),常用4個(gè):

Thread thread=new Thread();????????????????????????????????? //無(wú)參的Thread類構(gòu)造函數(shù)

Thread thread=new Thread(Runnable simple);?????????????????? //參數(shù)為實(shí)現(xiàn)Runnable接口類對(duì)象的構(gòu)造函數(shù)

Thread thread=new Thread("ThreadName");????????????????????? //參數(shù)為線程名稱的構(gòu)造函數(shù)

Thread thread=new Thread(Runnable simple,"ThreadName");????? //無(wú)參的Thread類構(gòu)造函數(shù)

2.Runnable接口

它只有一個(gè)方法就是run()方法,實(shí)現(xiàn)Runnable()接口后必須覆寫run()方法。

嗯,如上所說(shuō),先創(chuàng)建一個(gè)球的線程類:

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.util.Random;

import javax.swing.JPanel;

public class MyThread extends Thread{

private JPanel panel;

private int x,y;//坐標(biāo)位置

private int radius=50;//球半徑

private int vx,vy;//橫縱坐標(biāo)該變量

private Color color;

public MyThread(JPanel panel)

{

this.panel=panel;

Random random=new Random();//創(chuàng)建一個(gè)隨機(jī)類變量

vx=random.nextInt(20)+10;

vy=random.nextInt(10)+5;

radius=random.nextInt(10)+20;

color=new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256));

}

//重寫run的方法

public void run()

{

Random random=new Random();

//Graphics g=panel.getGraphics();//獲得窗體界面

Graphics2D g2=(Graphics2D)panel.getGraphics();

panel.setBackground(Color.BLACK);

while(true)

{

try{

Thread.sleep(100);//調(diào)用線程睡眠方法,讓線程能暫緩進(jìn)行

}catch(InterruptedException e ){

e.printStackTrace();

}

//覆蓋小球先前的軌跡

g2.setColor(panel.getBackground());//獲得窗體背景顏色

g2.fillOval(x, y, 2*radius, 2*radius);

x+=vx;

y+=vy;

g2.setColor(color);

g2.fillOval(x, y, 2*radius, 2*radius);

//若小球碰撞到面板邊緣,則反彈

if(x<0||x>panel.getWidth()-2*radius)

{

vx=-vx;

}

if(y<0||y>panel.getHeight()-2*radius)

{

vy=-vy;

}

}

}

}

這里大概要注意兩點(diǎn)吧:

1.要覆蓋小球先前的軌跡,不然所有時(shí)刻的軌跡都會(huì)顯現(xiàn)在窗體上。

2.考慮小球出界時(shí)的情況,設(shè)定反彈條件

之后當(dāng)然就是寫一個(gè)測(cè)試類

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class TestFrame {

private JPanel centerpanel;

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

TestFrame tf=new TestFrame();

tf.init();

}

//初始化界面的方法

public void init()

{

JFrame jf=new JFrame("線程入門");

jf.setSize(800, 600);

jf.setDefaultCloseOperation(3);

jf.setResizable(false);

JPanel northpanel=new JPanel();

northpanel.setSize(800, 200);

JButton jbu=new JButton("開(kāi)始");

//jbu.setPreferredSize(new Dimension(50,50));

jbu.addActionListener(al);

northpanel.add(jbu);

jf.add(northpanel,BorderLayout.NORTH);

centerpanel=new JPanel();

jf.add(centerpanel,BorderLayout.CENTER);

jf.setVisible(true);

}

ActionListener al=new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

MyThread thread=new MyThread(centerpanel);//創(chuàng)建一個(gè)線程

thread.start();//啟動(dòng)線程

}};

}

提醒下的是,最好創(chuàng)建兩個(gè)面板,北邊面板放按鈕,中間面板當(dāng)畫布,這里小球運(yùn)動(dòng)時(shí)就不會(huì)影響到按鈕的輪廓。

這樣操作完后,就能產(chǎn)生許許多多的小球啦。

總結(jié)

以上是生活随笔為你收集整理的线程动画屏保小球碰撞c语言,线程小动画之屏保--模仿小球碰撞反弹(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。