Newer
Older
piccolo2d.java / anchorgarden / src / main / java / jaist / css / covis / pui / FadeTimer.java
@Motoki Miura Motoki Miura on 14 Apr 2022 1 KB only matched package names
package jaist.css.covis.pui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Queue;

import javax.swing.Timer;

import org.piccolo2d.PNode;

public class FadeTimer implements ActionListener, Runnable{
	int keepMsec;
	int fadeMsec;
	public PNode pn;
	Thread thread;
	Timer timer = null;
	public Queue<FadeTimer> fadeTimers;
	//親がFadeTimerのリストを管理しており、消したらリストから自分自身を削除する場合
	public void setFadeTimers(Queue<FadeTimer> ft){
		fadeTimers = ft;
	}
	public FadeTimer(PNode p, int kM, int fM) {
		keepMsec = kM;
		pn = p;
		fadeMsec = fM;
		thread = new Thread(this);
		thread.start();
	}
	public void run() {
		try {
			Thread.sleep(keepMsec);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		timer = new Timer(fadeMsec, this);
		timer.setRepeats(false);
		pn.animateToTransparency(0f, fadeMsec);
		timer.start();
	}
	public void fadeNow(){
		if (timer == null){
			timer = new Timer(fadeMsec, this);
			timer.setRepeats(false);
			pn.animateToTransparency(0f, fadeMsec);
			timer.start();
		}
	}
	public void invisibleNow(){
		if (timer == null){
			timer = new Timer(fadeMsec, this);
			timer.setRepeats(false);
			pn.setTransparency(0f);
			timer.start();
		}
	}

	public void actionPerformed(ActionEvent e) {
		pn.removeFromParent();
		if (fadeTimers != null){
			fadeTimers.remove(this);
		}
	}


}