import java.awt.*;
import java.applet.*;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;public class Ball4 extends Applet implements Runnable, AudioClip {
private Image bgImage;
private Graphics bg;
private int x_speed = 1;
private int applety; private int y = 20;
int x = 100; int r = 10; public void init() { // AudioClip co = newAudioClip(“gun.wav”) start(); } public void start() { Thread th = new Thread(this);
th.start(); } public void stop() {
} public void destroy() {
} @Override
public void run() {
// TODO Auto-generated method stub
while (true) {
AudioClip co = getAudioClip(getCodeBase(), "gun.wav");
co.loop();


repaint(); // 设置动画移动速度
applety = this.getSize().width;
if (y > (applety - r / 2)) {
// 改变方向
x_speed = -1;
}
// 反弹上升球
else if (y < r / 2) { // 改变方向
x_speed = +1; }
y += x_speed; try {
Thread.sleep(10);
} catch (InterruptedException e) {
System.out.println(e);
}
} } public void update(Graphics g) {
if (bgImage == null) {
bgImage = createImage(this.getSize().width, this.getSize().height);
bg = bgImage.getGraphics();
}
;
// 后台清屏,即设置圆球组件和后台一样的颜色,大小 // bg.setColor(getBackground());
bg.setColor(Color.yellow);
bg.fillRect(0, 0, this.getSize().width, this.getSize().height);
// 绘制相应的元素组件 bg.setColor(getForeground());
paint(bg);
// 在屏幕上重画已经绘制好的圆
g.drawImage(bgImage, 0, 0, this); }; public void paint(Graphics g) { // 设置球的颜色
g.setColor(Color.blue); // 从x,y位置处画一个实心的圆
g.fillOval(x, y, 2 * r, 2 * r); } @Override
public void loop() {
// TODO Auto-generated method stub } @Override
public void play() {
// TODO Auto-generated method stub }}

解决方案 »

  1.   


    // 后台清屏,即设置圆球组件和后台一样的颜色,大小// bg.setColor(getBackground());bg.drawImage(这里填一个image对象)//加这句填背景
    bg.setColor(Color.yellow);
      

  2.   

    bg.setColor(Color.yellow);这句不要 
    现在没有环境我没试 可能不对
      

  3.   

    我在
    // bg.setColor(getBackground());
    bg.drawImage(这里填一个image对象)//加这句填背景
    写成了
    bg.setColor(Color.yellow);
    //bg.drawImage()
    blackImage=getImage(getCodeBase(),"aaa.gif");
    bg.drawImage(blackImage, 0, 0, this);
    bg.fillRect(0, 0, this.getSize().width, this.getSize().height);
    // 绘制相应的元素组件
    bg.setColor(getForeground());
    paint(bg);
    但小球不动了,背景也没出来啊,背景变成一片白色了???
      

  4.   

    Applet  现在还没挂掉吗?
      

  5.   

    我找到了,源代码如下:
    import java.awt.*;
    import java.applet.*;
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;public class Ball8 extends Applet implements Runnable, AudioClip {
    //private Image bgImage;
    private Graphics bg;
    private int x_speed = 1;
    private int applety;
    private Image blackground;

    private int y = 20;
    int x = 100; int r = 10; public void init() { // AudioClip co = newAudioClip(“gun.wav”)
    blackground=getImage(getCodeBase(),"tiankong.gif");
    start(); } public void start() { Thread th = new Thread(this);
    th.start(); } public void stop() {
    } public void destroy() {
    } @Override
    public void run() {
    // TODO Auto-generated method stub
    while (true) { AudioClip co = getAudioClip(getCodeBase(), "gun.wav");
    co.loop(); repaint(); // 设置动画移动速度
    applety = this.getSize().width;
    if (y > (applety - r / 2)) {
    // 改变方向
    x_speed = -1;
    }
    // 反弹上升球
    else if (y < r / 2) { // 改变方向
    x_speed = +1; }
    y += x_speed; try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    System.out.println(e);
    }
    } } public void update(Graphics g) {

    // if (bgImage == null) {
    // bgImage = createImage(this.getSize().width, this.getSize().height);
    //
    // bg = bgImage.getGraphics();
    // };
    //
    // if (blackground == null) {
    // blackground = createImage(this.getSize().width, this.getSize().height);
    // bg = blackground.getGraphics();
    //
    // };



    //blackground=getImage(getCodeBase(),"tiankong.gif");
    // 后台清屏,即设置圆球组件和后台一样的颜色,大小 // bg.setColor(getBackground());
    //bg.setColor(Color.yellow);
    //bg.fillRect(0, 0, this.getSize().width, this.getSize().height);


    // 绘制相应的元素组件 //bg.setColor(getForeground());
    paint(g);
    //paint(bg);
    // 在屏幕上重画已经绘制好的圆
    // g.drawImage(bgImage, 0, 0, this);
    //g.drawImage( blackground, 0, 0,  this); }; public void paint(Graphics g) {
    g.drawImage( blackground, 0, 0,  this);
    // 设置球的颜色
    g.setColor(Color.blue); // 从x,y位置处画一个实心的圆
    g.fillOval(x, y, 2 * r, 2 * r); } @Override
    public void loop() {
    // TODO Auto-generated method stub } @Override
    public void play() {
    // TODO Auto-generated method stub }}
    但声音还是没能解决!
      

  6.   

    教程是用applet写的,所以我也用applet ,何况不结合网页的话applet只是执行函数与java不同,其它都一样。