package jaist.css.covis;
import java.util.ArrayList;
import org.piccolo2d.PNode;
public class CoversTransparencyControl implements Runnable {
Thread transparencyThread = null;
ArrayList<PNode> effectAry; //ダイナミックに作成する?(計算コストを考え,ここではしない)
AnchorGarden window;
float target_transparency[] = new float[]{0.0f, 1.0f};
float tick_transparency[] = new float[]{-0.035f, 0.05f};
int direction = 0;
int msec;
float animcount = 20;
float currentValue = 1f;
boolean quitTransparencyThread = true;
public CoversTransparencyControl(AnchorGarden _win){
window = _win;
effectAry = new ArrayList<PNode>();
// ここに,影響をあたえるPNodeを追加する
}
void transparencyThread_Start(int direct){
if (direct == direction) return;
direction = direct;
// System.out.println("direction changes to "+direction);
if (transparencyThread == null){
quitTransparencyThread = false;
transparencyThread = new Thread(this);
transparencyThread.start();
}
}
public void run() {
while(!quitTransparencyThread){
currentValue += tick_transparency[direction];
if ((direction == 0 && currentValue < target_transparency[direction]) ||
(direction == 1 && target_transparency[direction] < currentValue )) {
currentValue = target_transparency[direction];
quitTransparencyThread = true;
}
for(PNode pn: effectAry){
pn.setTransparency(currentValue);
}
window.canvas.repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
transparencyThread = null;
// System.out.println("Thread exit");
}
}