JAVA研究室へ戻る


JAVAアプレットのイメージファイル表示サンプルです。ソースコード及びサンプルHTMLは ダウンロード コーナー入っています。
 複数イメージを読み込み、表示させるアプレットサンプルです。
 4種類のスクロールタイプを設定できますので、好みに合わせて 使用してください。また、読み込み完了待ち処理を追加しています

基本パラメータは
 timer   Int    表示を呼び出すタイミングを指定
 images  Int    イメージファイルの数
 imageX  String イメージファイル名指定(例: <param name=image1 value=/~kitaro/gif/title.gif> )
 type    string スクロールタイプ指定(up,down,left,right)
 scroll  Int    スクロール分割数
 delay   Int    イメージ表示毎の停止時間




// JAVA applet sample 'DrawImagesScroll.java' for kitaro C3Lab JAVA lab
// copyright (c) by kitaro 1996
// このプログラムはCGイメージを表示するアプレットサンプルです
//
// timer    : イメージファイル表示時間
// images   : イメージファイルの数
// imageX   : イメージファイル名(X = イメージナンバー)
// type     : up,down,left,right
// scroll   : スクロール分割数
// delay    : スクロール毎の待ち時間

import java.applet.*;
import java.awt.*;
import java.net.*;

public class DrawImagesScroll extends java.applet.Applet implements Runnable {
  String temp;
  //
  Thread thread;
  int wx,wy;
  int   timer,count,waiting;
  // background job
  MediaTracker mt;
  Graphics og;
  Image oimage;
  int images;
  Image image[];
  // scroll val;
  String type;
  int nType,nCount,nCountOrg,nCountWidth;
  int nScrollCount;
  int nDelay;
  boolean	bDlayflg;
  //
  int c1,c2;
  int x1,x2,y1,y2;
//  int ofs;

  public void init(){
	String wall;
	int i;
	temp = getParameter("timer");  if(temp==null)temp="100"; timer   = Integer.valueOf( temp ).intValue();
	temp = getParameter("wait");   if(temp==null)temp="100";  waiting = Integer.valueOf( temp ).intValue();
	temp = getParameter("images"); if(temp==null)temp="2";   images  = Integer.valueOf( temp ).intValue(); 
	temp = getParameter("wait");   if(temp==null)temp="3000";  nDelay = Integer.valueOf( temp ).intValue();

	type = getParameter("type");   if(type==null)type="up";
	temp = getParameter("scroll"); if(temp==null)temp="20";  nCountOrg= Integer.valueOf( temp ).intValue();

	mt = new MediaTracker(this);
	// Loading Images
	image = new Image[images];
	for(i=0;i=images)c2=0;
		switch(nType){
		case 0 :
			y1 = nCountWidth*nScrollCount;
			if(y1 >= wy) y1=wy;
			y1 = 0 - y1; y2 = y1 + wy; break;
		case 1 :
			y1 = nCountWidth*nScrollCount;
			if(y1 >= wy) y1=wy;
			y2 = y1 - wy; break;		
		case 2 : 
			x1 = nCountWidth*nScrollCount;
			if(x1 >= wx) x1=wx;
			x1 = 0 - x1; x2 = x1 + wx; break;
		case 3 :
			x1 = nCountWidth*nScrollCount;
			if(x1 >= wx) x1=wx;
			x2 = x1 - wx; break;		
		}
		if(++nScrollCount>nCountOrg) {nScrollCount=0; return 1;}
		return 0;
	}
 public void off_update(){
	if( scroll(count)!=0){
		if( ++count >= images) count=0; 
		bDlayflg = true;
		}
	}
 //*******************************************************************
  public void start(){
	thread = new Thread(this);
	thread.start();
  }
  public void run (){
    try{mt.waitForAll();}
	catch(InterruptedException e){showStatus(e.toString());return;}
	while(true)
	{
		bDlayflg = false;
		try{ thread.sleep(timer);}
		catch(Exception e){showStatus(e.toString());}
		off_update();
		if(bDlayflg==true)
		{
			try{ thread.sleep(nDelay);}
			catch(Exception e){showStatus(e.toString());}
		}
		repaint();
	}  
  }
  public void paint(Graphics g){
	og.drawImage(image[c1],x1,y1,new Color(0),this);
	og.drawImage(image[c2],x2,y2,new Color(0),this);
	g.drawImage(oimage,0,-2,new Color(0),this); 
  }
  public void update(Graphics g){paint(g); }
}

サンプルHTML
<html>
<head>
<title>DrawImagesScroll</title>
</head>
<body>
<hr>
<applet code=DrawImagesScroll width=200 height=200>
<param name=timer  value=1000>
<param name=images value=2>
<param name=image1 value=/~kitaro/gif/title.gif>
<param name=image2 value=/~kitaro/gif/title2.gif>
<param name=type   value=left>
<param name=scroll value=20>
</applet>
</body>
</html>
<hr>