XML Feeds

.

[java-dev] Re: JitterGUI Family Documentation

jbmaxwell jbmaxwell at btinternet.com
Sat Jun 2 09:29:12 MDT 2007


aha! Got it. setUniqueIndex on the parent can't be zero (which I'd set it to before)...

Here's the current code. Ben, if you find this laughably goofy, please point out where, and why.

// Created on 3-Sep-2005
import com.cycling74.max.*;
import java.util.*;

/**
 * @author bbn
 *
 * Max object container for a single slider
 */
public class JitterGuiSliderBank extends MaxObject {

	private JitterGuiSliderElement s = null;
	private ArrayList<JitterGuiSliderElement> Sliders = null;
	private String context;
	private float sX, sY, xoffset, yoffset;		
	public JitterGuiSliderBank(Atom args[])	// initialize with one slider
	{	
		if (args.length == 0)
			bail("gui.slider: need a context argument");
		context = args[0].toString();
		Sliders = new ArrayList<JitterGuiSliderElement>();
		s = new JitterGuiSliderElement(this, new Callback(this, "out"));
		s.init(context);
		s.setUniqueIndex(1);
		Sliders.add(s);
		declareAttribute("color", null, "setColor");
		declareAttribute("rotate", null, "setRotate");
		declareAttribute("position", null, "setPosition");
		declareAttribute("scale", null, "setScale");
	}
	
	public void nestSlider()
	{
	JitterGuiSliderElement sliderOne = Sliders.get(0);
	float homePositionX = sliderOne.position[0];
	float homePositionY = sliderOne.position[1];
	float homePositionZ = sliderOne.position[2];
	post("home position x: " +homePositionX);
	JitterGuiSliderElement slider = new JitterGuiSliderElement(this, new Callback(this, "out"));
	Atom[] setup = new Atom[]{Atom.newAtom((float)homePositionX + 0.4f),
				Atom.newAtom((float)homePositionY + 0.6f), Atom.newAtom((float)homePositionZ)};
	slider.init(context);
	slider.setUniqueIndex(Sliders.size() + 1);
	slider.setPosition(setup);
	Sliders.add(slider);
	// set up offsets for positioning later
	sX = s.position[0];
	sY = s.position[1];
	float sliderX = slider.position[0];
	xoffset = sliderX - sX;
	float sliderY = slider.position[1];
	yoffset = sliderY - sY;
	}

	public void out()
	{
		for(int i=0;i < Sliders.size();i++)
		{
			JitterGuiSliderElement slider = Sliders.get(i);
			outlet(0, slider.val);
		}
	}
	
	public void notifyDeleted()
	{
		for(int i=0;i < Sliders.size();i++)
		{
			JitterGuiSliderElement slider = Sliders.get(i);
			slider.free();
		}
	}
	
	public void setColor(Atom a[]) {s.setColor(a);}
	public void setRotate(Atom a[]) {s.setRotate(a);}
	public void setPosition(Atom a[]) 
	{
		s.setPosition(a);
		sX = s.position[0];
		sY = s.position[1];
		for(int i=1;i < Sliders.size();i++)
			{
			float sliderZ = Sliders.get(i).position[2];
			JitterGuiSliderElement slider = Sliders.get(i);
			Atom[] shift = new Atom[]{Atom.newAtom((float)sX + xoffset), Atom.newAtom((float)sY + yoffset),
							Atom.newAtom((float)sliderZ)};
			slider.setPosition(shift);
			}
	}
	public void setScale(Atom a[]) {s.setScale(a);}
}

cheers,

J.


More information about the java-dev mailing list