import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class MyImage2 extends Applet
{
Button start, stop;
Choice ch;
Image im;
AudioClip audio;
int flag=0;
public void init() {
setLayout(new BorderLayout());
Panel p = new Panel();
add(p, "North");
p.setBackground(new Color(200, 130, 80));
p.add(start=new Button("Start"));
p.add(stop=new Button("Stop"));
//Choice 생성 및 부착
ch = new Choice();
// 초이스에 문자열로 아이템 등록...pic01
for (int i=1;i<=7 ;i++ )
{
ch.add("pic"+i);
}
//패널에 초이스 부착
p.add(ch);
//이미지 로딩------
im=getImage(getDocumentBase(), getParameter("pic1"));
//오디오 파일 로딩
audio=getAudioClip(getDocumentBase(), getParameter("audio1"));
MyHandler my = new MyHandler();
start.addActionListener(my);
stop.addActionListener(my);
ch.addItemListener(my);
}//init()--------애플릿 실행시 딱 한번만 실행
class MyHandler implements ItemListener, ActionListener
{
public void itemStateChanged(ItemEvent e) {
String str = ch.getSelectedItem();
showStatus(str);
String filename= getParameter(str);
im=getImage(getDocumentBase(), filename);
repaint(); //중요///////
}
public void actionPerformed(ActionEvent e){
Object o=e.getSource();
if(o==start) {
flag=1;
Thread tr=new MyThread();
tr.start();
audio.play(); //오디오 파일 연주
}else if(o==stop) {
flag=0;
audio.stop();//오디오 파일 중지
}
}
}//////////////////////////
class MyThread extends Thread
{
public void run() {
//반복문 돌면서 이미지7컷을 로딩해주고 repaint()를 호출한다.....
//sleep()를 걸어서 타임delay를 주자....
int index=0;
while(flag==1) {
if(index>7)
index=0;
String filename=getParameter("pic"+ (++index));
im=getImage(getDocumentBase(),filename);
repaint();
try{
Thread.sleep(1000);
}catch (InterruptedException e) {
showStatus(e.getMessage());
}
}//while-----
}
}/////////////////////////
public void paint(Graphics g) {
g.drawImage(im, 50,50,200,200, this);
}//paint()------------수시로 실행
}