📄 ccb_welcome.java
字号:
/**
* @(#)Ccb_welcome.java
*
* Sample Applet application
*
* @author
* @version 1.00 05/11/23
*/
import java.awt.*;
import java.applet.*;
import java.awt.image.*;
import java.util.Random;
public class Ccb_welcome extends Applet implements Runnable{
int widthBack=500, heightBack =200;
Image imageBack, imageBuffer, imageSky, imageCCB, imageFront;
int widthFront = 250, heightFront = 50;
int xFront=(widthBack - widthFront)/2, yFront=heightBack-50-30, vxFront, vyFront;
MediaTracker tracker1;
Thread thread1;
boolean isEnd;
boolean isInitialized;
int numFrames = 60;
int currFrames = 0;
MemoryImageSource offImage;
MemoryImageSource offFront;
int pixsBack[];
PixelGrabber pg;
PixelGrabber pgCCB;
int pixsCCB[];
int pixs[];
int pixsFront[];
double bit_px[];
double bit_py[];
double bit_vx[];
double bit_vy[];
int bit_sx[];
int bit_sy[];
int bit_l[];
int bit_f[];
int bit_p[];
int bit_c[];
int bit_t[];
static int bit_max=100;
int ru =30;
int rv =30;
int bits = 1200;
static int bit_time =0;
static int bit_time_l =60;
String strText[]={"中国建设银行",
"建设现代生活",
"服务永无止境",
"用心才能做好",
"打造增值服务",
"超越客户希望",
"求实创新...."};
int strTextIdx =0;
int cFront =0;
int fullFront =0x00;
boolean isFull = true;
int fullPace =3;
boolean isDraw = false;
AudioClip sound1;
AudioClip sound2;
Random rand;
public void start(){
isEnd = false;
thread1 = new Thread(this);
thread1.start();
new makeFire();
}
public void stop(){
isEnd = true;
}
public void init() {
isInitialized = false;
vxFront = (int)(Math.random()*10);
vyFront = (int)(Math.random()*10);
System.out.println("vx:"+vxFront+",vy=:"+vyFront);
tracker1 = new MediaTracker(this);
Image temp1 =createImage(widthFront, heightFront*strText.length);
Font f = new Font("Dialog", Font.BOLD,38);
Graphics g1 = temp1.getGraphics();
g1.setFont(new Font("Dialog", Font.BOLD, 38));
g1.setColor(new Color(0, 0, 0));
g1.fillRect(0, 0, widthFront, heightFront*strText.length);
for(int fi=0; fi<strText.length;fi++){
g1.setColor(new Color(130, 130, 150));
g1.drawString(strText[fi], 2, 40+fi*50);
g1.setColor(new Color(100, 100, 250));
g1.drawString(strText[fi], 0, 39+fi*50);
}
pixsFront = new int[temp1.getWidth(null)* temp1.getHeight(null)];
PixelGrabber pg1 = new PixelGrabber(temp1,
0, 0,
temp1.getWidth(null),
temp1.getHeight(null),
pixsFront,
0, temp1.getWidth(null));
try{
pg1.grabPixels();
for(int i=0; i< temp1.getWidth(null)*temp1.getHeight(null); i++){
if((pixsFront[i]&0x00FFFFFF) == 0) pixsFront[i]&=0x00FFFFFF;
}
offFront = new MemoryImageSource(temp1.getWidth(null),
temp1.getHeight(null),
pixsFront,
0,
temp1.getWidth(null));
offFront.setAnimated(true);
offFront.setFullBufferUpdates(true);
imageFront = createImage(offFront);
}catch(InterruptedException iEx){}
pixs = new int[widthBack * heightBack];
offImage = new MemoryImageSource(widthBack,
heightBack,
pixs,
0,
widthBack);
offImage.setAnimated(true);
imageSky = createImage(offImage);
for(int i=0; i< widthBack*heightBack; i++)
pixs[i]=0xff000000;
bit_px = new double[bits];
bit_py = new double[bits];
bit_vx = new double[bits];
bit_vy = new double[bits];
bit_sx = new int[bits];
bit_sy = new int[bits];
bit_l = new int[bits];
bit_f = new int[bits];
bit_p = new int[bits];
bit_c = new int[bits];
bit_t = new int[bits];
for(int i=0; i<bits; i++) bit_f[i] = 0;
rand = new Random();
imageBack = getImage(getCodeBase(), "back.jpg");
imageCCB = getImage(getCodeBase(), "ccb.jpg");
sound1 = getAudioClip(getCodeBase(), "2.au");
sound2 = getAudioClip(getCodeBase(), "1.au");
tracker1.addImage(imageBack, 0);
tracker1.addImage(imageCCB, 1);
try{
tracker1.waitForAll();
}catch(InterruptedException iEx){}
pixsBack = new int[widthBack * heightBack];
pg = new PixelGrabber(imageBack,
0, 0,
widthBack, heightBack,
pixsBack, 0,
widthBack);
try{pg.grabPixels();}catch(InterruptedException iEx){}
for(int i=0; i< widthBack* heightBack; i++){
int r=pixsBack[i]&0x00FF0000>>16;
int g=pixsBack[i]&0x0000FF00>>8;
int b=pixsBack[i]&0xFF;
if(b < 5 && g < 5 && r < 5) pixsBack[i]=pixsBack[i]&0x00FFFFFF;
}
imageBack = createImage(new MemoryImageSource(widthBack,
heightBack,
pixsBack,
0, widthBack));
tracker1.addImage(imageBack, 3);
try{
tracker1.waitForID(3);
}catch(InterruptedException iEx){}
//创建后台缓冲去区
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
//imageBuffer = createImage(imageBack.getWidth(null),
// imageBack.getHeight(null)*2);
imageBuffer = gc.createCompatibleVolatileImage(imageBack.getWidth(null),
imageBack.getHeight(null)*2);
//结束后台缓冲区的创建
pixsCCB = new int[imageCCB.getWidth(null)* imageCCB.getHeight(null)];
pgCCB = new PixelGrabber(imageCCB,
0, 0,
imageCCB.getWidth(null),
imageCCB.getHeight(null),
pixsCCB, 0,
imageCCB.getWidth(null));
try{
pgCCB.grabPixels();
}catch(InterruptedException iEx){}
MemoryImageSource offCCB =new MemoryImageSource(imageCCB.getWidth(null),
imageCCB.getHeight(null),
pixsCCB, 0,
imageCCB.getWidth(null));
//offCCB.setAnimated(true);
//imageCCB = createImage(offCCB);
for(int i=0; i<imageCCB.getWidth(null)*imageCCB.getHeight(null); i++){
int j =pixsCCB[i]&0x00FFFFFF;
if(j >0x00500202 ) pixsCCB[i]&=0x00FFFFFF;
}
System.out.println("w="+imageCCB.getWidth(null)+",h="+imageCCB.getHeight(null));
imageCCB = createImage(offCCB);
isInitialized = true;
}
public void update(Graphics g){
if(imageBuffer != null){
g.drawImage(imageBuffer, 0, 0, this);
}
}
public void paint(Graphics g) {
update(g);
}
public void run(){
while(isInitialized == false)
try {
Thread.sleep(100l);
}catch(InterruptedException iEx){}
//MAKE FIRE
while(isEnd == false){
int i;
for(i = 0; i < widthBack * (heightBack-2); i++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -