import java.awt.*; import java.awt.image.*; import java.applet.Applet; class MyCanvas extends Canvas implements Runnable { final String AppInfo = "Moving Sprites by Hiroyuki Murata"; final String imagefile = "8ken_bw.gif"; final int N=8, SpWidth=32; final Font fontFix = new Font("TimesRoman",Font.ITALIC,20); final Font fontApp = new Font("TimesRoman",Font.ITALIC,36); final int colors[] = { 0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0x00ffff, 0xff00ff, 0xff8000, 0x00ff80, 0x8000ff }; Applet app; Frame frame; Thread thread; MediaTracker tracker; Image sprite[] = new Image[N]; Motion mv[] = new Motion[N]; int offsetB; // x-offset of Front,Background int size_w,size_h; Image iA; Graphics gA; Toolkit tk; boolean calledByUpdate, // (set in update()) loadedB, // loaded on backbround loadedF, // loaded on front loadedAll, // loaded on all sprites & background loadingDisplayed, // "loading..." displayed sleepEnable // long sleep enable ; //--------------------------------------------------------------------- MyCanvas(int size_w, int size_h, Applet app, Frame frame) { this.size_w = size_w; this.size_h = size_h; this.app = app; this.frame = frame; frame.setCursor(Frame.HAND_CURSOR); setBackground(Color.black); } //--------------------------------------------------------------------- public Dimension preferredSize() { return new Dimension(size_w,size_h); } //--------------------------------------------------------------------- public void init() { loadedB = loadedF = loadedAll = calledByUpdate = loadingDisplayed = false; sleepEnable = false; tracker = new MediaTracker(this); offsetB = size_w; tk = getToolkit(); iA = createImage(offsetB+size_w,size_h); gA = iA.getGraphics(); gA.setColor(Color.pink); gA.fillRect(offsetB,0,size_w,size_h); gA.setColor(Color.cyan); gA.fillRect(0,0,size_w,size_h); Image allsprite = app.getImage(app.getDocumentBase(), imagefile); ImageProducer imgSrc = allsprite.getSource(); for (int i=0; i